zoukankan      html  css  js  c++  java
  • spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid

    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将注入失败。

    @Mapper
    public 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.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
    

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

    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

    参考资料

  • 相关阅读:
    pdf在线转换器
    抖音修复老照片动起来笑起来的程序app的下载地址
    FFmpeg.AutoGen Unable to load DLL 'avutil.56' 解决方法
    Array.prototype.fill 填充值被复用的问题
    Recoil Input 光标位置被重置到末尾的问题
    TypeScript 扩展全局 Window 时报错的解决
    Recoil 中默认值的正确处理
    Recoil 中多级数据联动及数据重置的合理做法
    Recoil 默认值及数据级联的使用
    Recoil 的使用
  • 原文地址:https://www.cnblogs.com/MaxElephant/p/8108342.html
Copyright © 2011-2022 走看看