弹簧引导实战之数据库操作的示例代码

  

上篇文章中已经通过一个简单的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(条);   }   }      

弹簧引导实战之数据库操作的示例代码