spring boot整合mybatis

  作者:记性不好的阁主

1、导入所需依赖


这里使用的是阿里的druid框架


<!--数据库相关-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>


2、在项目的config目录下创建配置文件





3、配置DAO


package cn.ucmed.merger.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;

import java.util.Properties;

/**
* mybatis配置
*
* @author HJH
* @since 2017-08-09
**/
@Configuration
public class MybatisConfig {

@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("cn.ucmed.merger.dao");
mapperScannerConfigurer.setMarkerInterface(Mapper.class);
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
Properties properties = new Properties();
properties.setProperty("ORDER", "BEFORE");
properties.setProperty("keyProperty", "id");
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}

}


属性说明:


1、BasePackage:扫描Mapper文件所在包

2、MarkerInterface:指定了要寻找的父接口

3、ORDER:插入数据时执行顺序

1) 若主键是自增长,则值为AFTER  插入之后才能获取id值

2) 若主键是UUID,则值为BEFORE 插入之前就已经定义好id值

注:只能大写

4、keyProperty:插入数据需要回写的字段,一般是主键Id


uuid主键生成例pojo:


package cn.ucmed.merger.model.hospital;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;

/**
* 医院model
*/
public class Hospital implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "SELECT CONCAT(date_format(NOW(), '%Y%m%d%H%i%s'),REPLACE (UUID(), '-', ''))")
private String id;
private String groupId;
private String unionId;
private String name;
private String homePage;
private String headLogo;
private String bottomLogo;
private String phoneLogo;
private String manageLogo;
private String fax;
private String phone;
private String email;
private String address;
private String postcode;
private String keywords;
private String description;
private String copyright;
private String customerPhone;
private String customerCode;
private Date createTime;
private Date updateTime;
private String isDelete;
private String remoteHospitalId;

//get set 省略
}


4、配置数据库连接相关


applicationn.properties文件


#--------------数据源配置------------#
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://ip:3306/db?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=username
spring.datasource.password=password
druid.login.enabled=true
druid.login.username=druid
druid.login.password=druid

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=20
spring.datasource.minIdle=30
spring.datasource.maxActive=50
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=true
spring.datasource.testOnReturn=true
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.filters=stat
spring.datasource.connectionProperties=druid.stat.slowSqlMillis=5000



属性说明:

1、druid.login.enable:是否开启监控配置访问权限

2、druid.login.username:登录用户名

3、druid.login.password:登录密码

监控访问地址:http://localhost:8088/druid/index.html


5、配置druid数据源





package cn.ucmed.merger.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.sql.SQLException;

/**
* Created with IntelliJ IDEA.
* User: HLW-RYH-1370
* Date: 2019/2/26
* Time: 9:13
* To change this template use File | Settings | File Templates.
*/
@Configuration
public class DruidConfig {
private static final Logger LOG = LoggerFactory.getLogger(DruidConfig.class);

@Value("${druid.login.enabled}")
private boolean druidLoginEnabled;

@Value("${druid.login.username}")
private String druidLoginUsername;

@Value("${druid.login.password}")
private String druidLoginPassword;

@Value("${spring.datasource.url}")
private String dbUrl;

@Value("${spring.datasource.username}")
private String username;

@Value("${spring.datasource.password}")
private String password;

@Value("${spring.datasource.driverClassName}")
private String driverClassName;

@Value("${spring.datasource.initialSize}")
private int initialSize;

@Value("${spring.datasource.minIdle}")
private int minIdle;

@Value("${spring.datasource.maxActive}")
private int maxActive;

@Value("${spring.datasource.maxWait}")
private int maxWait;

@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;

@Value("${spring.datasource.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;

@Value("${spring.datasource.validationQuery}")
private String validationQuery;

@Value("${spring.datasource.testWhileIdle}")
private boolean testWhileIdle;

@Value("${spring.datasource.testOnBorrow}")
private boolean testOnBorrow;

@Value("${spring.datasource.testOnReturn}")
private boolean testOnReturn;

@Value("${spring.datasource.poolPreparedStatements}")
private boolean poolPreparedStatements;

@Value("${spring.datasource.filters}")
private String filters;

@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new StatViewServlet());
reg.addUrlMappings("/druid/*");

//web访问是否需要登录
if(druidLoginEnabled) {
reg.addInitParameter("loginUsername", druidLoginUsername);
reg.addInitParameter("loginPassword", druidLoginPassword);
}
return reg;
}

@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.addInitParameter("profileEnable", "true");
filterRegistrationBean.addInitParameter("principalCookieName", "USER_COOKIE");
filterRegistrationBean.addInitParameter("principalSessionName", "USER_SESSION");
return filterRegistrationBean;
}

@Primary
@Bean(name="dataSource")
public DataSource druidDataSource() {
LOG.info("开始配置druidDataSource");
DruidDataSource datasource = new DruidDataSource();

datasource.setUrl(this.dbUrl);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
LOG.error("druid configuration initialization filter", e);
}
LOG.info("druidDataSource配置成功");
return datasource;
}

}



相关推荐

评论 抢沙发

表情

分类选择