SpringBoot+MyBatis(xml)+Druid

前言

springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成。
主要是在Spring Boot中集成MyBatis,可以选用基于注解的方式,也可以选择xml文件配置的方式。官方推荐使用xml文件配置。

springboot+mybatis+druid

1. 引入依赖

  1. <!-- Mybatis -->
  2. <dependency>
  3. <groupId>org.mybatis.spring.boot</groupId>
  4. <artifactId>mybatis-spring-boot-starter</artifactId>
  5. <version>1.1.1</version>
  6. <!-- 请不要使用1.0.0版本,因为还不支持拦截器插件 -->
  7. </dependency>
  8. <!-- druid阿里巴巴数据库连接池 -->
  9. <dependency>
  10. <groupId>com.alibaba</groupId>
  11. <artifactId>druid</artifactId>
  12. <version>1.0.20</version>
  13. </dependency>
  14. <!-- MySql数据库驱动 -->
  15. <dependency>
  16. <groupId> mysql</groupId>
  17. <artifactId> mysql-connector-java</artifactId>
  18. <version> 5.0.5</version>
  19. </dependency>

2. 在Mysql中创建Users表

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

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

User实体类:

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

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

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

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

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

4. 配置文件

application.properties:

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

5. 调用测试:

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

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

效果图:
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

项目参考

集合了我的 SpringBoot 学习的案例:
包括了我前面学习的案例!
SpringBoot+MyBatis+Druid

参考资料

spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid的更多相关文章

  1. spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)

    SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManag ...

  2. 12.SpringBoot+MyBatis(XML)+Druid

    转自:https://www.cnblogs.com/MaxElephant/p/8108342.html 主要是在Spring Boot中集成MyBatis,可以选用基于注解的方式,也可以选择xml ...

  3. Spring Boot 2.x整合mybatis及druid数据源及逆向工程

    1逆向工程 1)db.properties #============================# #===== Database sttings =====# #=============== ...

  4. spring boot(七):springboot+mybatis多数据源最简解决方案

    说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...

  5. spring boot 学习(十)SpringBoot配置发送Email

    SpringBoot配置发送Email 引入依赖 在 pom.xml 文件中引入邮件配置: <dependency> <groupId>org.springframework. ...

  6. spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)

    第一节:Spring Data Jpa 简介 Spring-Data-Jpa JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate ...

  7. spring boot学习(2) SpringBoot 项目属性配置

    第一节:项目内置属性 application.properties配置整个项目的,相当于以前的web.xml: 注意到上一节的访问HelloWorld时,项目路径也没有加:直接是http://loca ...

  8. spring boot学习(3) SpringBoot 之MVC 支持

    第一节:@RequestMapping 配置url 映射   第二节:@Controller 处理http 请求 转发到一个页面,以前是转发到jsp页面,现在使用freemarker: 在pom.xm ...

  9. Spring Boot学习笔记(六)mybatis配置多数据源

    application.properties #数据库配置 #数据源类型 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # ...

随机推荐

  1. http://bugs.mysql.com/bug.php?id=72123

    今天某个环境发生了这个bug. http://bugs.mysql.com/bug.php?id=72123

  2. ELK之logstash6.5

    首先安装,这里采用rpm安装: # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 创建repo文件: [root@no ...

  3. 在Android Studio中创建项目和模拟器

    北京电子科技学院 实      验      报      告 课程:移动平台应用开发实践  班级:201592  姓名:杨凤  学号:20159213 成绩:___________  指导老师:娄嘉 ...

  4. Delphi XE5 for Android (六)

    今天尝试了TTabControl的使用.在很多Android的app中,首次启动时都使用选项卡模式进行产品介绍,用户通过向左滑动,改变选项卡.在xe5下这项工作由TTabControl控件完成,如下图 ...

  5. 【第十八章】 springboot + thymeleaf

    代码结构: 1.ThymeleafController package com.xxx.firstboot.web; import org.springframework.stereotype.Con ...

  6. Codeforces Round #426 (Div. 2) C. The Meaningless Game

    C. The Meaningless Game 题意: 两个人刚刚开始游戏的时候的分数, 都是一分, 然后随机一个人的分数扩大k倍,另一个扩大k的平方倍, 问给你一组最后得分,问能不能通过游戏得到这样 ...

  7. MongoDB树形结构表示法

    http://docs.mongodb.org/manual/tutorial/model-tree-structures/ MongoDB五种树形结构表示法 第一种:父链接结构 db.categor ...

  8. UVa 12108 特别困的学生

    https://vjudge.net/problem/UVA-12108 题意:给出n个学生的“清醒—睡眠”周期和初始时间点,每个学生在睡眠时需要判断全班睡觉人数是否严格大于清醒人数,否则在坚持一个清 ...

  9. asp.net webform 自定义 select 绑定数值

    前台: <select id="ddlAddedItemType" runat="server"> <option value="& ...

  10. Linux批量更改文件后缀-转载

    一.rename解决 1.  Ubuntu系统下 rename 's//.c//.h/'  ./* 把当前目录下的后缀名为.c的文件更改为.h的文件 2.  CentOS5.5系统下 rename . ...