• 12.SpringBoot+MyBatis(XML)+Druid


    转自: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

  • 相关阅读:
    方法是Objective-C独有的一种结构,只能在Objective-C中声明、定义和使用,C语言不能声明、定义和使用
    NSDate
    runtime
    iOS开发常用的工具
    程序的国际化
    经常使用的iOS SDK库和第三方库
    RunLoop是什么?
    狼若回头,必有理由
    第1年1月21日 Guard Malloc
    第1年1月10日 flv格式
  • 原文地址:https://www.cnblogs.com/sharpest/p/7954237.html
Copyright © 2020-2023  润新知