SpringBoot入门建站全系列(三)Mybatis操作数据库
SpringBoot操作数据库有多种方式,如
JDBC直接操作: 玩法太古老了,而且难免会忘记关闭连接。没人愿意这样玩
Mybatis插件:比较时髦,比较适合sql复杂,或者对性能要求高的应用,因为sql都是自己写的。
Spring-data-jpa: 使用hibernate作为实现,基本上不需要写sql,因为sql都是统计的,总是会产生多余的查询,性能上相对而言会低,但不绝对,影响性能的因素是多种的,这里说的性能是 从最终的查询的sql来对比的,毕竟生成的sql没有经过深思熟虑写出来的性能好。
JdbcTemplate:spring在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。Spring-data-jpa引入的时候,JdbcTemplate必然会被引入的。
当然还有其他中间件,主流使用的就是Mybatis和Spring-data-jpa。索引本篇先讲Mybatis。
品茗IT-SpringBoot专题-同步发布
品茗IT 提供在线支持:
一键快速构建Spring项目工具
一键快速构建SpringBoot项目工具
一键快速构建SpringCloud项目工具
一站式Springboot项目生成
Mysql一键生成Mybatis注解Mapper
如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。
一、引入依赖
需要同时引入数据库的connector和数据源datasource,当然也可以使用mybatis自己实现的数据源,但是还是以第三方数据源最好,毕竟经过大家的认可。
<dependency>
完整的依赖如下所示:
<project
二、配置数据库连接信息
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=cff
spring.datasource.password=123456spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.datasource.dbcp2.max-wait-millis=60000
spring.datasource.dbcp2.min-idle=20
spring.datasource.dbcp2.initial-size=2
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.test-while-idle=true
spring.datasource.dbcp2.test-on-borrow=true
spring.datasource.dbcp2.test-on-return=falsemybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
三、使用Mybatis的Mapper
3.1 表与Java实体
假设我们有一张这个表user_role :
实体:
import
3.2 使用注解方式写sql
import
其中,插入操作中的语句:
@Options
是用来回显ID的,方便保存后回查。
3.3 使用xml方式写sql
使用xml方式写sql,需要先在SpringBoot读取的配置文件(可以放在环境相关的配置文件中,也可以直接放在application.properties文件)中加入:
mybatis.mapper-locations=classpath:mapper/*.xml
这条配置指定了xml的配置在classpath下的mapper文件夹下。
首先建立一个mapper接口:
import
在配置文件mapper文件夹下建立UserRoleInfoMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
这里,多参数传递的时候,刚开始用#{0},#{1}这种形式取值,出现:
nested
这种异常,可能是版本升级,取参方式改变了,那就按照它说的换成param或者arg就行,如果怕出问题,就直接在接口的参数前加上@Param注解,xml中以名称来取变量即可。
四、service逻辑调用Mapper。
UserRoleService:
import
五、开放接口调用service
MybatisRest:
import
喜欢这篇文章么,喜欢就加入我们一起讨论SpringBoot技术吧!