4Spring Boot 集成 Mybatis

来源:互联网 发布:在线网络理财产品排行 编辑:程序博客网 时间:2024/06/03 15:26

Mybatis 官方提供了 mybatis-spring-boot-starter

 

https://github.com/mybatis/spring-boot-starter

http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

Example

使用spring boot starter pom

需要导入 mybatis-spring-boot-starter 和 数据库连接相关的配置

pom.xml

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>com.ibigsea</groupId>  
  6.     <artifactId>bootdao</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>bootdao</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.         <boot.version>1.3.1.RELEASE</boot.version>  
  16.     </properties>  
  17.   
  18.     <dependencies>  
  19.         <dependency>  
  20.             <groupId>org.springframework.boot</groupId>  
  21.             <artifactId>spring-boot-starter-web</artifactId>  
  22.             <version>${boot.version}</version>  
  23.         </dependency>  
  24.         <dependency>  
  25.             <groupId>org.mybatis.spring.boot</groupId>  
  26.             <artifactId>mybatis-spring-boot-starter</artifactId>  
  27.             <version>1.1.1</version>  
  28.         </dependency>  
  29.         <!-- mysql 驱动 -->  
  30.         <dependency>  
  31.             <groupId>mysql</groupId>  
  32.             <artifactId>mysql-connector-java</artifactId>  
  33.             <version>5.1.38</version>  
  34.         </dependency>  
  35.         <!-- 数据库连接池 -->  
  36.         <dependency>  
  37.             <groupId>com.alibaba</groupId>  
  38.             <artifactId>druid</artifactId>  
  39.             <version>1.0.5</version>  
  40.         </dependency>  
  41.         <dependency>  
  42.             <groupId>org.springframework.boot</groupId>  
  43.             <artifactId>spring-boot-starter-test</artifactId>  
  44.             <version>${boot.version}</version>  
  45.             <scope>test</scope>  
  46.         </dependency>  
  47.     </dependencies>  
  48.   
  49.     <build>  
  50.         <plugins>  
  51.             <plugin>  
  52.                 <groupId>org.springframework.boot</groupId>  
  53.                 <artifactId>spring-boot-maven-plugin</artifactId>  
  54.             </plugin>  
  55.         </plugins>  
  56.     </build>  
  57.   
  58. </project>  

是不是很方便,mybatisstarter pom里面依赖了 mybatisspring相关的jar

只需导入一个就OK


这里采用的是阿里巴巴的druid数据连接池

为了方便使用 yml配置文件

application.yml

spring:

datasource:    name: test    url:  jdbc:mysql://10.100.13.238:3306/credithc_crmdk_cs    username: crmdk_admin    password: crmdkadmin123!@#    # 使用druid数据源    type: com.alibaba.druid.pool.DruidDataSource    driver-class-name: com.mysql.jdbc.Driver    filters: stat    maxActive: 20    initialSize: 1    maxWait: 60000    minIdle: 1    timeBetweenEvictionRunsMillis: 60000    minEvictableIdleTimeMillis: 300000    validationQuery: select 'x'    testWhileIdle: true    testOnBorrow: false    testOnReturn: false    poolPreparedStatements: true    maxOpenPreparedStatements: 20
mybatis:    typeAliasesPackage: com.hengchang.entity    checkConfigLocation: false    mapperLocations: classpath:mapper/*.xml

User.Java

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.hengchang.entity;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class User implements Serializable {  
  6.   
  7.     private static final long serialVersionUID = 8809101560720973267L;  
  8.       
  9.     private Integer id;  
  10.       
  11.     private String userName;  
  12.       
  13.     private Integer age;  
  14.   
  15.     public Integer getId() {  
  16.         return id;  
  17.     }  
  18.   
  19.     public void setId(Integer id) {  
  20.         this.id = id;  
  21.     }  
  22.   
  23.     public String getUserName() {  
  24.         return userName;  
  25.     }  
  26.   
  27.     public void setUserName(String userName) {  
  28.         this.userName = userName;  
  29.     }  
  30.   
  31.     public Integer getAge() {  
  32.         return age;  
  33.     }  
  34.   
  35.     public void setAge(Integer age) {  
  36.         this.age = age;  
  37.     }  
  38.   
  39.     @Override  
  40.     public String toString() {  
  41.         return "User [id=" + id + ", userName=" + userName + ", age=" + age + "]";  
  42.     }  
  43.       
  44.       
  45. }  

UserMapper.java


这里是dao层,要用注解@mapper 标识:

如果是简单的查询 比如说 getbyID ,可以不写到配置文件里:

@Mapperpublic interface A {    @Select("select account_number from crm_finance_import where id = #{id}")    public String getById(@Param(value = "id") String id);}
如果是复杂的,这种处理不了的,就需要在配置文件里写,就像在spring 中使用的那样。

view plai ccopy

 在CODE上查看代码片派生到我的代码片
  1. <p>UserMapper.xml</p>  
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
  3. <mapper namespace="com.ibigsea.bootdao.mapper.UserMapper" >  
  4.   
  5.     <select id="selectById" resultType="com.ibigsea.bootdao.entity.User">  
  6.         select * from t_user where id = #{id,jdbcType=NUMERIC}  
  7.     </select>  
  8. </mapper>  

然后把这个类注入到需要的地方就ok了。


Mybatis相关的配置



MybatisAutoConfiguration

Spring boot 在运行的时候会进行自动配置

读取到 mybatis-spring-boot-autoconfigure 里面的spring.factories,然后自动配置

就是下面这个类



这个方法使用了PostConstruct注解,在初始化的时候去加载mybatis的配置文件,然后创建SqlSessionFactory



Mybatis自动配置会自动创建 sqlSessionFactory和 SqlSessionTemplate



这个东西 就是 加载注解了@Mapper的类

如果不喜欢在mapper上面加注解的话,也可以通过@MapperScan


这样子:


这样就OK

0 0
原创粉丝点击