六、SpringBoot 数据库操作

Spring对持久化的支持,不单只支持JDBC,为各种支持的持久化技术都提供了简单的模板和回调:

本章节主要讲解通过SpringBoot如何访问操作数据库,以下述三种方式来操作数据库:

JdbcTemplate

JPA

MyBatis

本文以简单的对数据库表的基本操作为例进行说明。

数据库使用MySQL数据库,新建t_user表。

1、JdbcTemplate

JdbcTemplate是Spring对JDBC的模板封装,提供了一套JDBC模板,能够让我们写持久层代码时减少冗余代码,简化JDBC代码,使代码更加简洁,有点像DBUtils。JdbcTemplate在实际开发中一般不会使用,通常都是使用MyBatis、Hibernate等更加成熟、优秀的数据持久层框架,这里只是对它的使用做一说明,知道如何用它就可以啦。

1.1 引入JdbcTemplate依赖包

在工程的pom.xml中,添加如下依赖包信息。

如果没有导入mysql依赖包,则需要添加mysql-connector-java。

1.2 持久层(dao层)

实现持久层dao完成数据的插入。

1.3、控制层(Controller)

(完整代码请从文末github地址获取)

在浏览器中输入http://localhost:8888/demo/insertUserByJdbcTemplate,完成数据的插入。

2、JPA

JPA(Java Persistence API)是java持久层API,一个简化对象关系映射来管理Java应用程序中关系数据库的规范,可以直接使用对象而不是使用SQL语句。在JPA中,我们可以通过实体类轻松地操作数据库中的表。

2.1、引入依赖包

通过JPA的方式来实现数据库的操作,首先需要引入如下的依赖包。

2.2、ORM

在model中User类中增加Entiy的注解,并指定表名(如果不指定,则默认表名为类名user),然后需要指定ID及生成策略。

(这些都是JPA相关的知识,不清楚的可以详细查看JPA)

3、MyBatis

MyBatis方式是极力推荐的方式,操作简单,代码量少。

3.1引入依赖包

引入mybatis-spring-boot-starter依赖包。

3.2 mapper接口

mapper接口中,定义对数据库的增、删、改、查具体操作,不用实现类。

/springboot/src/main/java/com/xcbeyond/springboot/mapper/UserMapper.java

3.3 配置mapper

MyBatis一般可以通过XML或者注解的方式来指定操作数据库的SQL,建议使用XML方式。首先,我们需要配置mapper文件夹,即:/springboot/src/main/resources/mybatis/mapper/,并在application.properties中配置mapper路径。

创建要操作表的mapper.xml SQL文件,即:/springboot/src/main/resources/mybatis/mapper/UserMapper.xml

注:符合ByBatis的sql 配置,详细配置可查询ByBatis相关知识。

3.4 controller

3.5 测试

启动SpringBoot项目后,在浏览器中输入http://localhost:8888/demo/queryUserByUserid?userid=xcbeyond,进行查询显示查询结果。

启动时,报如下错误:

这是因为在SpringBoot启动时,无法找到Mapper,导致无法被SpringBoot管理。可以采取如下几种方式来管理UserMapper接口。

方式一:使用@Mapper注解

为了让UserMapper能够让别的类进行引用,我们可以在UserMapper类上添加@Mapper注解:

直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,比较麻烦。

方式二:使用@MapperScan注解

需在启动类中添加@MapperScan注解,指定要扫描的Mapper类的包的路径即可。

总结:

本章节主要讲述了在SpringBoot中如何操作数据库,其中JdbcTemplate和JPA只是说明在SpringBoot中可以这样操作数据库,但在实际项目中推荐使用MyBaits方式,这样会非常方便的。

项目源码:https://github.com/xcbeyond/micro-service/tree/master/springboot

“程序猿技术大咖”,您值得拥有!

公众号ID:cxyjsdk

长按左侧二维码关注

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G0XIVR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券