springboot整合mybatis很简单,因为springboot集成了大部分的框架,第三方库。
一、springboot整合mybatis
1、创建项目时要勾选相关的组件
2、创建好项目后在导入pom依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
加了这个pom依赖会自动检测DataSource,然后创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递,接着创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例,再自动扫描mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到bean中。
这就是使用springboot的好处,相比spring整合mybatis的时候方便很多。
3、配置application.yml
server:
servlet:
context-path: /springboot
port: 8080
spring:
datasource:
#1.JDBC
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
username: root
password: 123
druid:
#2.\u8FDE\u63A5\u6C60\u914D\u7F6E
#\u521D\u59CB\u5316\u8FDE\u63A5\u6C60\u7684\u8FDE\u63A5\u6570\u91CF \u5927\u5C0F\uFF0C\u6700\u5C0F\uFF0C\u6700\u5927
initial-size: 5
min-idle: 5
max-active: 20
#\u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
max-wait: 60000
#\u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
time-between-eviction-runs-millis: 60000
# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
min-evictable-idle-time-millis: 30000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: true
test-on-return: false
# \u662F\u5426\u7F13\u5B58preparedStatement\uFF0C\u4E5F\u5C31\u662FPSCache \u5B98\u65B9\u5EFA\u8BAEMySQL\u4E0B\u5EFA\u8BAE\u5173\u95ED \u4E2A\u4EBA\u5EFA\u8BAE\u5982\u679C\u60F3\u7528SQL\u9632\u706B\u5899 \u5EFA\u8BAE\u6253\u5F00
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# \u914D\u7F6E\u76D1\u63A7\u7EDF\u8BA1\u62E6\u622A\u7684filters\uFF0C\u53BB\u6389\u540E\u76D1\u63A7\u754C\u9762sql\u65E0\u6CD5\u7EDF\u8BA1\uFF0C'wall'\u7528\u4E8E\u9632\u706B\u5899
filter:
stat:
merge-sql: true
slow-sql-millis: 5000
#3.\u57FA\u7840\u76D1\u63A7\u914D\u7F6E
web-stat-filter:
enabled: true
url-pattern: /*
#\u8BBE\u7F6E\u4E0D\u7EDF\u8BA1\u54EA\u4E9BURL
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
session-stat-enable: true
session-stat-max-count: 100
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: true
#\u8BBE\u7F6E\u76D1\u63A7\u9875\u9762\u7684\u767B\u5F55\u540D\u548C\u5BC6\u7801
login-username: admin
login-password: admin
allow: 127.0.0.1
#deny: 192.168.1.100
4、使用mybatis的 generator 自动生成代码
5、注意不同
生成代码后在xxMapper.xml中,我们在spring整合的时候是写@Repository注解的,但在springboot会报错,解决办法有两种
①、@repository标签改为@Mapper标签
添加@Mapper之后,这个接口在编译时会生成相应的实现类。但请注意,这个接口不可以定义同名的方法,因为会生成相同的id,因此这个接口不支持重载。这样做虽然能解决文集,但以后都要为每个Dao层的接口添加@Mapper注解
②、不修改@Repository注解,在启动了中添加@MapperScan("com.zking.xx.mapper")
扫描多个包:@MapperScan({"xx.dao","xx.mapper"})
在测试类中,与之前的spring整合也是不同的。
在spring中test测试要继承该类
在springboot中在test类中写入两行注解
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Springboot03Application.class)
在启动类中加入事务管理器注解@EnableTransactionManagement,配合@Transactional使用
//启用事物管理器:将方法回滚,如一个方法中同时调用了修改和删除的方法,修改出错,那么一切都回到原位。
@EnableTransactionManagement
二、配置分页插件
1、导入依赖
dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2、application.yml中配置
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
3、配置log日志:方便在运行时在控制台看到SQL语句
logging:
level:
com.zking.springboot01.mapper: debug
4、在启动类中加入注解
//启用动态代理
@EnableAspectJAutoProxy