转自: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测试图:

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

最新文章

  1. web自动化工具-livereload
  2. JQuery 控制元素显示隐藏
  3. C++创建一个动态链接库工程
  4. How to Analyze Java Thread Dumps--reference
  5. Qt浅谈之四十九俄罗斯方块(代码来自网络)
  6. 解读JavaScript代码 var ie = !-[1,]
  7. HDU 1027 - Ignatius and the Princess II
  8. golang切片slice
  9. pcntl_fork 导致 MySQL server has gone away 解决方案
  10. Angularjs快速入门(一)
  11. Server2012R2 ADFS3.0 The same client browser session has made &#39;6&#39; requests in the last &#39;13&#39;seconds
  12. 做一个开源的小程序登录模块组件(token)
  13. 软工+C(6): 最近发展区/脚手架
  14. array_rand
  15. Nginx调试入门
  16. 小程序json字符串转为对象
  17. java把类似a=1&amp;b=2&amp;c=3的String类型数据转成map集合
  18. Python3.5 学习十七
  19. C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息
  20. vSphere通过Client创建Centos7主机

热门文章

  1. Linux系统消息队列框架Kafka单机安装配置
  2. qt hex to dec
  3. 为SSD编程(4)——高级功能和内部并行
  4. web api 特点
  5. HDU 2633 Getting Driving License(模拟)
  6. Block Manager
  7. Gym - 100502A Amanda Lounges
  8. 将已有的Eclipse项目转化为Maven项目
  9. 使用maven的tomcat:run进行web项目热部署
  10. POJ 1442 Black Box treap求区间第k大