12.SpringBoot+MyBatis(XML)+Druid

本文介绍如何在SpringBoot项目中集成MyBatis并配合Druid连接池进行数据库操作,包括依赖配置、实体类定义、Mapper接口及XML文件编写等步骤。

转自:https://www.cnblogs.com/MaxElephant/p/8108342.html

主要是在Spring Boot中集成MyBatis,可以选用基于注解的方式,也可以选择xml文件配置的方式。官方推荐使用xml文件配置。

springboot+mybatis+druid

1. 引入依赖
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- Mybatis -->
<dependency>
     <groupid>org.mybatis.spring.boot</groupid>
     mybatis-spring-boot-starter</artifactid>
     <version> 1.1 . 1 </version>
     <!-- 请不要使用 1.0 . 0 版本,因为还不支持拦截器插件 -->
</dependency>
<!-- druid阿里巴巴数据库连接池 -->
<dependency>
     <groupid>com.alibaba</groupid>
     druid</artifactid>
     <version> 1.0 . 20 </version>
</dependency>
<!-- MySql数据库驱动 -->
<dependency>
     <groupid> mysql</groupid>
      mysql-connector-java</artifactid>
     <version> 5.0 . 5 </version>
</dependency>
2. 在Mysql中创建Users表

Users表中包含id(BIGINT)、name(INT)、age(VARCHAR)字段。

3. 创建接口Mapper(不是类)和对应的XML文件

User实体类:

?
1
2
3
4
5
6
7
8
public class User {
 
     private long id;
     private String name;
     private Integer age;
 
     // 省略相应的 getter 与 setter 方法
}

UserDao接口:实现插入和查询操作
注意必须加上@Mapper的注解,不然@Autowired将注入失败。

?
1
2
3
4
5
6
7
<code><code> @Mapper
public interface UserDao{
 
     int insertUser( @Param ( "user" ) User user);
 
     User findByName(String name);
}</code></code>

@Mapper注解标记这个接口作为一个映射接口。真正实现映射的方法(XML文件)需要源对象作为参数,并返回目标对象。
UserMapper.xml文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<code><code><code><!--?xml version= "1.0" encoding= "UTF-8" ?-->
 
<mapper namespace= "qg.fangrui.boot.dao.UserDao" >
     <!--目的:为Dao接口方法提供SQL语句-->
 
     <!--映射实体对象-->
     <resultmap id= "UserResultMap" type= "qg.fangrui.boot.model.User" >
         <id column= "id" property= "id" >
         <result column= "name" property= "name" >
         <result column= "age" property= "age" >
     </result></result></id></resultmap>
 
     <insert id= "insertUser" >
         INSERT INTO users(name, age)
         VALUES (#{user.name}, #{user.age})
     </insert>
 
     <select id= "findByName" resulttype= "User" >
         SELECT * FROM users WHERE name = #{name}
     </select>
 
</mapper></code></code></code>
4. 配置文件

application.properties:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<code><code><code># 驱动配置信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url = jdbc:mysql: //127.0.0.1:3306/myboot?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
 
#连接池的配置信息
spring.datasource.initialSize= 5
spring.datasource.minIdle= 5
spring.datasource.maxActive= 20
spring.datasource.maxWait= 60000
spring.datasource.timeBetweenEvictionRunsMillis= 60000
spring.datasource.minEvictableIdleTimeMillis= 300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle= true
spring.datasource.testOnBorrow= false
spring.datasource.testOnReturn= false
spring.datasource.poolPreparedStatements= true
spring.datasource.maxPoolPreparedStatementPerConnectionSize= 20
spring.datasource.filters=stat,wall,log4j
spring.datasource.connectionProperties=druid.stat.mergeSql= true ;druid.stat.slowSqlMillis= 5000
 
# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases- package =qg.fangrui.boot.model</code></code></code>
5. 调用测试:

一般情况下,我是用Controller层调用Service层,Service层调用Dao层。测试案例比较简单,我就不列了,只是简单展示一下相应的Controller。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<code><code><code> @RestController
@RequestMapping ( "/test" )
public class TestController {
 
     @Autowired
     private UserService userService;
 
     @RequestMapping ( "/add" )
     public String add(User user){
         return String.valueOf(userService.add(user));
     }
 
}</code></code></code>

效果图:
Postman测试图:
Postman测试图
Druid监控图:
Druid监控图

附录

补充

mybatis-spring-boot-starter的依赖树:
依赖树

Mybatis 在 SpringBoot 中的配置:
* mybatis.mapper-locations:xml文件扫描位置
* mybatis.type-aliases-package:Model包扫描位置
* mybatis.config:mybatis-config.xml配置文件的路径
* mybatis.typeHandlersPackage:扫描typeHandlers的包
* mybatis.checkConfigLocation:检查配置文件是否存在
* mybatis.executorType:设置执行模式(SIMPLE, REUSE, BATCH),默认为SIMPLE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值