上篇文章中已经通过一个简单的HelloWorld程序讲解了弹簧引导的基本原理和使用。本文主要讲解如何通过春天的引导来访问数据库,本文会演示三种方式来访问数据库,第一种是JdbcTemplate,第二种是JPA、第三种是Mybatis。之前已经提到过,本系列会以一个博客系统作为讲解的基础,所以本文会讲解文章的存储和访问(但不包括文章的详情),因为最终的实现是通过Mybatis来完成的,所以,对于JdbcTemplate和JPA只做简单演示,Mybatis部分会完整实现对文章的增删改查。
<强>一、准备工作强>
在演示这几种方式之前,需要先准备一些东西。第一个就是数据库,本系统是采用MySQL实现的,我们需要先创建一个tb_article的表:
删除表如果存在“tb_article”; 创建表“tb_article”( “id”bigint (20) NOT NULL AUTO_INCREMENT, “标题”varchar (255) NOT NULL违约”, “总结”varchar (1024) NOT NULL违约”, “状态”int (11) NOT NULL默认“0”, “类型”int(11)不是零, user_id的bigint (20) NOT NULL默认“0”, “create_time”时间戳NOT NULL CURRENT_TIMESTAMP违约, “update_time”时间戳NOT NULL CURRENT_TIMESTAMP违约, “public_time”时间戳NOT NULL CURRENT_TIMESTAMP违约, 主键(“id”) )引擎=InnoDB默认字符集=utf8; >之前后续的演示会对这个表进行增删改查,大家应该会看到这个表里面并没有文章的详情,原因是文章的详情比较长,如果放在这个表里面容易影响查询文章列表的效率,所以文章的详情会单独存在另外的表里面。此外我们需要配置数据库连接池,这里我们使用德鲁伊连接池,另外配置文件使用yaml配置,即application.yml(你也可以使用application.properties配置文件,没什么太大的区别,如果对ymal不熟悉,有兴趣也可以查一下,比较简单)。连接池的配置如下:
春天: 数据源: url: jdbc: mysql://127.0.0.1:3306/博客# 63;useUnicode=true& characterEncoding=UTF-8& useSSL=false driverClassName: com.mysql.jdbc.Driver 用户名:根 密码:123456 类型:com.alibaba.druid.pool.DruidDataSource最后,我们还需要建立与数据库对应的POJO类,代码如下:
公共类文章{ 私人长id; 私人字符串标题; 私人字符串总结; 私人createTime日期; 私人publicTime日期; 私人updateTime日期; 私人长标识; 私人整数状态; 私人整数类型; } >之前好了,需要准备的工作就这些,现在开始实现数据库的操作。
<强>二,与JdbcTemplate集成强>
首先,我们先通过JdbcTemplate来访问数据库,这里只演示数据的插入,上一篇文章中我们已经提到过,春天引导提供了许多的起动器来支撑不同的功能,要支持JdbcTemplate我们只需要引入下面的起动器就可以了:
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-jdbc & lt;/dependency>现在我们就可以通过JdbcTemplate来实现数据的插入了:
公共接口ArticleDao { 长insertArticle(文章文章); } @ 公共类ArticleDaoJdbcTemplateImpl实现ArticleDao { @ autowired 私人NamedParameterJdbcTemplate jdbcTemplate; @Override 公共长insertArticle(文章文章){ 字符串sql="插入tb_article(标题、摘要、user_id create_time, public_time, update_time,状态)" + ”值(:标题、摘要、:userId, createTime,: publicTime,: updateTime,:状态)”; Object> Map<字符串;,参数=new HashMap<的在(); 参数。put(“标题”,article.getTitle ()); 参数。(“摘要”,article.getSummary ()); 参数。put(“标识”,article.getUserId ()); 参数。把(“地位”,article.getStatus ()); 参数。put (" createTime ", article.getCreateTime ()); 参数。put (" publicTime ", article.getPublicTime ()); 参数。put (" updateTime ", article.getUpdateTime ()); (长)jdbcTemplate返回。更新(sql参数); } } >之前我们通过JUnit来测试上面的代码:
@RunWith (SpringJUnit4ClassRunner.class) @SpringBootTest(类=Application.class) 公开课ArticleDaoTest { @ autowired 私人ArticleDao ArticleDao; @Test 公共空间testInsert () { 篇文章=新文章(); article.setTitle(“测试标题”); article.setSummary(“测试摘要”); article.setUserId(1升); article.setStatus (1); 篇文章。setCreateTime(新日期()); 篇文章。setUpdateTime(新日期()); 篇文章。setPublicTime(新日期()); articleDao.insertArticle(条); } }弹簧引导实战之数据库操作的示例代码