MyBatis的持久化解决方案是将用户从原始的JDBC访问中解放出来,用户只需要定义需要操作的SQL语句,
无须关注底层的JDBC操作,就可以以面向对象的方式来进行持久化层操作.底层数据库连接的获取,数据访问的实现,事务控制等都无须用户关心,
从而将应用层从底层的JDBC/JTA API抽取出来.通过配置文件管理JDBC连接,让MyBatis解决持久化的实现.在MyBatis中的常见对象有SqlSessionFactory和SqlSession.
依赖
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.0.1
mysql
mysql-connector-java
runtime
5.1.27
com.alibaba
druid-spring-boot-starter
1.1.10
org.springframework.boot
spring-boot-starter-test
test
src/main/java
**/*.xml
src/main/resources
org.springframework.boot
spring-boot-maven-plugin
View Code
use类
public classUser {privateLong id;privateString username;privateString address;
@OverridepublicString toString() {return "User{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
'}';
}publicLong getId() {returnid;
}public voidsetId(Long id) {this.id =id;
}publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getAddress() {returnaddress;
}public voidsetAddress(String address) {this.address =address;
}
}
View Code
DataSourceConfig 数据源配置类
importcom.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjavax.sql.DataSource;
@Configurationpublic classDataSourceConfig {
@Bean
@ConfigurationProperties(prefix= "spring.datasource.one")
DataSource dsOne() {returnDruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix= "spring.datasource.two")
DataSource dsTwo() {returnDruidDataSourceBuilder.create().build();
}
}
View Code
MyBatisConfigOne
importorg.apache.ibatis.session.SqlSessionFactory;importorg.mybatis.spring.SqlSessionFactoryBean;importorg.mybatis.spring.SqlSessionTemplate;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjavax.sql.DataSource;
@Configuration
@MapperScan(basePackages= "org.javaboy.mybatis.mapper1", sqlSessionFactoryRef = "sqlSessionFactory1", sqlSessionTemplateRef = "sqlSessionTemplate1")public classMyBatisConfigOne {
@Autowired
@Qualifier("dsOne")
DataSource dsOne;
@Bean
SqlSessionFactory sqlSessionFactory1() {
SqlSessionFactory sessionFactory= null;try{
SqlSessionFactoryBean bean= newSqlSessionFactoryBean();
bean.setDataSource(dsOne);
sessionFactory=bean.getObject();
}catch(Exception e) {
e.printStackTrace();
}returnsessionFactory;
}
@Bean
SqlSessionTemplate sqlSessionTemplate1() {return newSqlSessionTemplate(sqlSessionFactory1());
}
}
View Code
MyBatisConfigTwo
importorg.apache.ibatis.session.SqlSessionFactory;importorg.mybatis.spring.SqlSessionFactoryBean;importorg.mybatis.spring.SqlSessionTemplate;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjavax.sql.DataSource;
@Configuration
@MapperScan(basePackages= "org.javaboy.mybatis.mapper2", sqlSessionFactoryRef = "sqlSessionFactory2", sqlSessionTemplateRef = "sqlSessionTemplate2")public classMyBatisConfigTwo {
@Autowired
@Qualifier("dsTwo")
DataSource dsOne;
@Bean
SqlSessionFactory sqlSessionFactory2() {
SqlSessionFactory sessionFactory= null;try{
SqlSessionFactoryBean bean= newSqlSessionFactoryBean();
bean.setDataSource(dsOne);
sessionFactory=bean.getObject();
}catch(Exception e) {
e.printStackTrace();
}returnsessionFactory;
}
@Bean
SqlSessionTemplate sqlSessionTemplate2() {return newSqlSessionTemplate(sqlSessionFactory2());
}
}
View Code
UserMapper1
importorg.javaboy.mybatis.bean.User;importjava.util.List;//@Mapper
public interfaceUserMapper1 {//@Select("select * from t_user")
ListgetAllUser();
}
View Code
UserMapper1.xml
/p>
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select*from t_user;
View Code
UserMapper2
importorg.javaboy.mybatis.bean.User;importjava.util.List;//@Mapper
public interfaceUserMapper2{//@Select("select * from t_user")
ListgetAllUser();
}
View Code
UserMapper2.xml
/p>
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select*from t_user;
View Code
application.properties 配置文件
spring.datasource.one.url=jdbc:mysql:///test01
spring.datasource.one.username=root
spring.datasource.one.password=root
spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.one.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.two.url=jdbc:mysql:///test02
spring.datasource.two.username=root
spring.datasource.two.password=root
spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.two.driver-class-name=com.mysql.jdbc.Driver
View Code