spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid

来源:互联网 发布:监控app软件排行 编辑:程序博客网 时间:2024/06/05 11:03

SpringBoot+MyBatis(xml)+Druid

前言

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

springboot+mybatis+druid

1. 引入依赖

        <!-- Mybatis -->        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>1.1.1</version>            <!-- 请不要使用1.0.0版本,因为还不支持拦截器插件 -->        </dependency>        <!-- druid阿里巴巴数据库连接池 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.0.20</version>        </dependency>        <!-- MySql数据库驱动 -->        <dependency>            <groupId> mysql</groupId>            <artifactId> mysql-connector-java</artifactId>            <version> 5.0.5</version>        </dependency>

2. 在Mysql中创建Users表

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

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

User实体类:

public class User {    private long id;    private String name;    private Integer age;    // 省略相应的 getter 与 setter 方法}

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

@Mapperpublic interface UserDao{    int insertUser(@Param("user") User user);    User findByName(String name);}

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

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="qg.fangrui.boot.dao.UserDao">    <!--目的:为Dao接口方法提供SQL语句-->    <!--映射实体对象-->    <resultMap id="UserResultMap" type="qg.fangrui.boot.model.User">        <id property="id" column="id" />        <result property="name" column="name" />        <result property="age" column="age" />    </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>

4. 配置文件

application.properties:

# 驱动配置信息spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url = jdbc:mysql://127.0.0.1:3306/myboot?useUnicode=true&characterEncoding=utf-8spring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driverClassName = com.mysql.jdbc.Driver#连接池的配置信息spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20spring.datasource.maxWait=60000spring.datasource.timeBetweenEvictionRunsMillis=60000spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=falsespring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.filters=stat,wall,log4jspring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# MyBatis 配置mybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=qg.fangrui.boot.model

5. 调用测试:

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

@RestController@RequestMapping("/test")public class TestController {    @Autowired    private UserService userService;    @RequestMapping("/add")    public String add(User user){        return String.valueOf(userService.add(user));    }}

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

项目参考

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

参考资料

  • (官方文档,推荐)http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
  • (超级大神)http://blog.csdn.net/isea533/article/details/50359390?locationNum=3&fps=1
  • (注解类MyBatis)http://blog.didispace.com/springbootmybatis/
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫客服不回复怎么办 三岁宝宝不说话怎么办 六个月宝宝粘人怎么办 11个月宝宝粘人怎么办 一岁宝宝脸冻了怎么办 2个月宝宝粘人怎么办 8个月宝宝粘人怎么办 9个月宝宝粘人怎么办 8个月婴儿粘人怎么办 4个月宝宝粘人怎么办 7个月宝宝粘人怎么办 8个月孩子太粘人怎么办 7个月宝宝太粘人怎么办 两岁宝宝粘人怎么办 孩子屁股被打了怎么办 长期被骂的孩子怎么办 儿童感冒咳嗽怎么办最有效 打了排卵针不排卵怎么办 孩孑上课不专心怎么办 4岁上课不听讲怎么办 孩子上课不认真听讲怎么办 孩子做什么都慢怎么办 7岁上课不听讲怎么办 打孩子脸肿了怎么办 一岁宝宝太调皮怎么办 怀孕早期喝了酒怎么办 怀孕期间喝了酒怎么办 一岁宝宝多动怎么办 3岁前儿童多动症怎么办 好动症的孩子该怎么办 18个月宝宝腹泻怎么办 8个月小孩发烧怎么办 八个月大宝宝发烧怎么办 8个月宝宝拉稀水怎么办 八个月宝宝38度怎么办 8个月的宝宝发烧怎么办 八个月大的宝宝拉肚子怎么办 9孩子上课坐不住怎么办 3岁宝宝太皮怎么办 4岁的宝宝多动症怎么办 小孩好动注意力不集中怎么办