鄂尔多斯市建设网站,临沂百度联系方式,怎么用html5做自适应网站,莱州网络建站SpringBoot使用MyBatis多数据源
我们以 Mybatis Xml和注解两种版本为例#xff0c;给大家展示如何如何配置多数据源。
1、注解方式
数据库文件#xff1a;
DROP TABLE IF EXISTS users;
CREATE TABLE users (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键id,userN…SpringBoot使用MyBatis多数据源
我们以 Mybatis Xml和注解两种版本为例给大家展示如何如何配置多数据源。
1、注解方式
数据库文件
DROP TABLE IF EXISTS users;
CREATE TABLE users (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键id,userName varchar(32) DEFAULT NULL COMMENT 用户名,passWord varchar(32) DEFAULT NULL COMMENT 密码,user_sex varchar(32) DEFAULT NULL,nick_name varchar(32) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8;1.1 pom依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.0.RELEASE/versionrelativePath//parentgroupIdcom.example/groupIdartifactIdspring-boot-mybatis-annotation-mulidatasource/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-boot-mybatis-annotation-mulidatasource/namedescriptionspring-boot-mybatis-annotation-mulidatasource/descriptionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.0.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project1.2 配置文件
mybatis.type-aliases-packagecom.example.modelspring.datasource.test1.jdbc-urljdbc:mysql://localhost:3306/test1?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrue
spring.datasource.test1.usernameroot
spring.datasource.test1.passwordroot
spring.datasource.test1.driver-class-namecom.mysql.cj.jdbc.Driverspring.datasource.test2.jdbc-urljdbc:mysql://localhost:3306/test2?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrue
spring.datasource.test2.usernameroot
spring.datasource.test2.passwordroot
spring.datasource.test2.driver-class-namecom.mysql.cj.jdbc.Driver1.3 Mapper
package com.example.mapper.test1;import com.example.enums.UserSexEnum;
import com.example.model.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;import java.util.List;Component
public interface User1Mapper {Select(SELECT * FROM users)Results({Result(property userSex, column user_sex, javaType UserSexEnum.class),Result(property nickName, column nick_name)})ListUser getAll();Select(SELECT * FROM users WHERE id #{id})Results({Result(property userSex, column user_sex, javaType UserSexEnum.class),Result(property nickName, column nick_name)})User getOne(Long id);Insert(INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex}))void insert(User user);Update(UPDATE users SET userName#{userName},nick_name#{nickName} WHERE id #{id})void update(User user);Delete(DELETE FROM users WHERE id #{id})void delete(Long id);}package com.example.mapper.test2;import java.util.List;import com.example.enums.UserSexEnum;
import com.example.model.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;Component
public interface User2Mapper {Select(SELECT * FROM users)Results({Result(property userSex, column user_sex, javaType UserSexEnum.class),Result(property nickName, column nick_name)})ListUser getAll();Select(SELECT * FROM users WHERE id #{id})Results({Result(property userSex, column user_sex, javaType UserSexEnum.class),Result(property nickName, column nick_name)})User getOne(Long id);Insert(INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex}))void insert(User user);Update(UPDATE users SET userName#{userName},nick_name#{nickName} WHERE id #{id})void update(User user);Delete(DELETE FROM users WHERE id #{id})void delete(Long id);}1.4 实体类
package com.example.model;import java.io.Serializable;import com.example.enums.UserSexEnum;public class User implements Serializable {private static final long serialVersionUID 1L;private Long id;private String userName;private String passWord;private UserSexEnum userSex;private String nickName;public User() {super();}public User(String userName, String passWord, UserSexEnum userSex) {super();this.passWord passWord;this.userName userName;this.userSex userSex;}public Long getId() {return id;}public void setId(Long id) {this.id id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord passWord;}public UserSexEnum getUserSex() {return userSex;}public void setUserSex(UserSexEnum userSex) {this.userSex userSex;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName nickName;}Overridepublic String toString() {return userName this.userName , pasword this.passWord sex userSex.name();}}package com.example.enums;public enum UserSexEnum {MAN, WOMAN
}1.5 配置类
package com.example.datasource;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;Configuration
MapperScan(basePackages com.example.mapper.test1, sqlSessionTemplateRef test1SqlSessionTemplate)
public class DataSource1Config {Bean(name test1DataSource)ConfigurationProperties(prefix spring.datasource.test1)Primarypublic DataSource testDataSource() {return DataSourceBuilder.create().build();}Bean(name test1SqlSessionFactory)Primarypublic SqlSessionFactory testSqlSessionFactory(Qualifier(test1DataSource) DataSource dataSource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(dataSource);return bean.getObject();}Bean(name test1TransactionManager)Primarypublic DataSourceTransactionManager testTransactionManager(Qualifier(test1DataSource) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Bean(name test1SqlSessionTemplate)Primarypublic SqlSessionTemplate testSqlSessionTemplate(Qualifier(test1SqlSessionFactory) SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}package com.example.datasource;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;Configuration
MapperScan(basePackages com.example.mapper.test2, sqlSessionTemplateRef test2SqlSessionTemplate)
public class DataSource2Config {Bean(name test2DataSource)ConfigurationProperties(prefix spring.datasource.test2)public DataSource testDataSource() {return DataSourceBuilder.create().build();}Bean(name test2SqlSessionFactory)public SqlSessionFactory testSqlSessionFactory(Qualifier(test2DataSource) DataSource dataSource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(dataSource);return bean.getObject();}Bean(name test2TransactionManager)public DataSourceTransactionManager testTransactionManager(Qualifier(test2DataSource) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Bean(name test2SqlSessionTemplate)public SqlSessionTemplate testSqlSessionTemplate(Qualifier(test2SqlSessionFactory) SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}1.6 启动类
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class SpringBootMybatisAnnotationMulidatasourceApplication {public static void main(String[] args) {SpringApplication.run(SpringBootMybatisAnnotationMulidatasourceApplication.class, args);}}1.7 控制器
package com.example.web;import java.util.List;import com.example.mapper.test1.User1Mapper;
import com.example.mapper.test2.User2Mapper;
import com.example.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class UserController {Autowiredprivate User1Mapper user1Mapper;Autowiredprivate User2Mapper user2Mapper;RequestMapping(/getUsers)public ListUser getUsers() {ListUser usersuser1Mapper.getAll();return users;}RequestMapping(/getUser)public User getUser(Long id) {User useruser2Mapper.getOne(id);return user;}RequestMapping(/add)public void save(User user) {user2Mapper.insert(user);}RequestMapping(valueupdate)public void update(User user) {user2Mapper.update(user);}RequestMapping(value/delete/{id})public void delete(PathVariable(id) Long id) {user1Mapper.delete(id);}}1.8 测试类
package com.example.mapper;import com.example.enums.UserSexEnum;
import com.example.mapper.test1.User1Mapper;
import com.example.model.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;RunWith(SpringRunner.class)
SpringBootTest
public class User1MapperTest {Autowiredprivate User1Mapper userMapper;Testpublic void testInsert() throws Exception {userMapper.insert(new User(aa, a123456, UserSexEnum.MAN));userMapper.insert(new User(bb, b123456, UserSexEnum.WOMAN));userMapper.insert(new User(cc, b123456, UserSexEnum.WOMAN));// Assert.assertEquals(3, userMapper.getAll().size());}Testpublic void testQuery() throws Exception {ListUser users userMapper.getAll();if(usersnull || users.size()0){System.out.println(is null);}else{System.out.println(users.size());}}Testpublic void testUpdate() throws Exception {User user userMapper.getOne(6l);System.out.println(user.toString());user.setNickName(neo);userMapper.update(user);Assert.assertTrue((neo.equals(userMapper.getOne(6l).getNickName())));}}package com.example.mapper;import com.example.enums.UserSexEnum;
import com.example.mapper.test2.User2Mapper;
import com.example.model.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;RunWith(SpringRunner.class)
SpringBootTest
public class User2MapperTest {Autowiredprivate User2Mapper userMapper;Testpublic void testInsert() throws Exception {userMapper.insert(new User(aa, a123456, UserSexEnum.MAN));userMapper.insert(new User(bb, b123456, UserSexEnum.WOMAN));userMapper.insert(new User(cc, b123456, UserSexEnum.WOMAN));// Assert.assertEquals(3, userMapper.getAll().size());}Testpublic void testQuery() throws Exception {ListUser users userMapper.getAll();if(usersnull || users.size()0){System.out.println(is null);}else{System.out.println(users.toString());}}Testpublic void testUpdate() throws Exception {User user userMapper.getOne(6l);System.out.println(user.toString());user.setNickName(neo);userMapper.update(user);Assert.assertTrue((neo.equals(userMapper.getOne(6l).getNickName())));}}2、Xml 方式
数据库文件
DROP TABLE IF EXISTS users;
CREATE TABLE users (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键id,userName varchar(32) DEFAULT NULL COMMENT 用户名,passWord varchar(32) DEFAULT NULL COMMENT 密码,user_sex varchar(32) DEFAULT NULL,nick_name varchar(32) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8;2.1 pom依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.0.RELEASE/versionrelativePath//parentgroupIdcom.example/groupIdartifactIdspring-boot-mybatis-xml-mulidatasource/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-boot-mybatis-xml-mulidatasource/namedescriptionspring-boot-mybatis-xml-mulidatasource/descriptionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.0.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project2.2 配置文件
mybatis.config-locationclasspath:mybatis/mybatis-config.xmlspring.datasource.test1.jdbc-urljdbc:mysql://localhost:3306/test1?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrue
spring.datasource.test1.usernameroot
spring.datasource.test1.passwordroot
spring.datasource.test1.driver-class-namecom.mysql.cj.jdbc.Driverspring.datasource.test2.jdbc-urljdbc:mysql://localhost:3306/test2?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrue
spring.datasource.test2.usernameroot
spring.datasource.test2.passwordroot
spring.datasource.test2.driver-class-namecom.mysql.cj.jdbc.Driver一个 test1 库和一个 test2 库其中 test1 位主库在使用的过程中必须指定主库不然会报错。
2.3 数据源配置
package com.example.datasource;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;Configuration
MapperScan(basePackages com.example.mapper.test1, sqlSessionTemplateRef test1SqlSessionTemplate)
public class DataSource1Config {Bean(name test1DataSource)ConfigurationProperties(prefix spring.datasource.test1)Primarypublic DataSource testDataSource() {return DataSourceBuilder.create().build();}Bean(name test1SqlSessionFactory)Primarypublic SqlSessionFactory testSqlSessionFactory(Qualifier(test1DataSource) DataSource dataSource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mybatis/mapper/test1/*.xml));return bean.getObject();}Bean(name test1TransactionManager)Primarypublic DataSourceTransactionManager testTransactionManager(Qualifier(test1DataSource) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Bean(name test1SqlSessionTemplate)Primarypublic SqlSessionTemplate testSqlSessionTemplate(Qualifier(test1SqlSessionFactory) SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}package com.example.datasource;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;Configuration
MapperScan(basePackages com.example.mapper.test2, sqlSessionTemplateRef test2SqlSessionTemplate)
public class DataSource2Config {Bean(name test2DataSource)ConfigurationProperties(prefix spring.datasource.test2)public DataSource testDataSource() {return DataSourceBuilder.create().build();}Bean(name test2SqlSessionFactory)public SqlSessionFactory testSqlSessionFactory(Qualifier(test2DataSource) DataSource dataSource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mybatis/mapper/test2/*.xml));return bean.getObject();}Bean(name test2TransactionManager)public DataSourceTransactionManager testTransactionManager(Qualifier(test2DataSource) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Bean(name test2SqlSessionTemplate)public SqlSessionTemplate testSqlSessionTemplate(Qualifier(test2SqlSessionFactory) SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}最关键的地方就是这块了一层一层注入,首先创建 DataSource然后创建 SqlSessionFactory 再创建事务最后
包装到 SqlSessionTemplate 中。其中需要指定分库的 mapper 文件地址以及分库dao层代码
MapperScan(basePackages com.neo.mapper.test1, sqlSessionTemplateRef test1SqlSessionTemplate)这块的注解就是指明了扫描 dao 层并且给 dao 层注入指定的 SqlSessionTemplate。所有Bean都需要按照命
名指定正确。
2.4 dao 层和 xml层
dao 层和 xml 需要按照库来分在不同的目录比如test1 库 dao 层在 com.neo.mapper.test1 包下test2 库
在com.neo.mapper.test2
package com.example.mapper.test1;import com.example.model.User;
import org.springframework.stereotype.Component;import java.util.List;Component
public interface User1Mapper {ListUser getAll();User getOne(Long id);void insert(User user);void update(User user);void delete(Long id);}package com.example.mapper.test2;import com.example.model.User;
import org.springframework.stereotype.Component;import java.util.List;Component
public interface User2Mapper {ListUser getAll();User getOne(Long id);void insert(User user);void update(User user);void delete(Long id);}xml 层
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.test1.User1Mapper resultMap idBaseResultMap typecom.example.model.User id columnid propertyid jdbcTypeBIGINT /result columnuserName propertyuserName jdbcTypeVARCHAR /result columnpassWord propertypassWord jdbcTypeVARCHAR /result columnuser_sex propertyuserSex javaTypecom.example.enums.UserSexEnum/result columnnick_name propertynickName jdbcTypeVARCHAR //resultMapsql idBase_Column_List id, userName, passWord, user_sex, nick_name/sqlselect idgetAll resultMapBaseResultMap SELECT include refidBase_Column_List /FROM users/selectselect idgetOne parameterTypejava.lang.Long resultMapBaseResultMap SELECT include refidBase_Column_List /FROM usersWHERE id #{id}/selectinsert idinsert parameterTypecom.example.model.User INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})/insertupdate idupdate parameterTypecom.example.model.User UPDATE users SET if testuserName ! nulluserName #{userName},/ifif testpassWord ! nullpassWord #{passWord},/ifnick_name #{nickName}WHERE id #{id}/updatedelete iddelete parameterTypejava.lang.Long DELETE FROMusers WHERE id #{id}/delete/mapper?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.mapper.test2.User2Mapper resultMap idBaseResultMap typecom.example.model.User id columnid propertyid jdbcTypeBIGINT /result columnuserName propertyuserName jdbcTypeVARCHAR /result columnpassWord propertypassWord jdbcTypeVARCHAR /result columnuser_sex propertyuserSex javaTypecom.example.enums.UserSexEnum/result columnnick_name propertynickName jdbcTypeVARCHAR //resultMapsql idBase_Column_List id, userName, passWord, user_sex, nick_name/sqlselect idgetAll resultMapBaseResultMap SELECT include refidBase_Column_List /FROM users/selectselect idgetOne parameterTypejava.lang.Long resultMapBaseResultMap SELECT include refidBase_Column_List /FROM usersWHERE id #{id}/selectinsert idinsert parameterTypecom.example.model.User INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})/insertupdate idupdate parameterTypecom.example.model.User UPDATE users SET if testuserName ! nulluserName #{userName},/ifif testpassWord ! nullpassWord #{passWord},/ifnick_name #{nickName}WHERE id #{id}/updatedelete iddelete parameterTypejava.lang.Long DELETE FROMusers WHERE id #{id}/delete/mapper?xml version1.0 encodingUTF-8 ?
!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd
configurationtypeAliasestypeAlias aliasInteger typejava.lang.Integer /typeAlias aliasLong typejava.lang.Long /typeAlias aliasHashMap typejava.util.HashMap /typeAlias aliasLinkedHashMap typejava.util.LinkedHashMap /typeAlias aliasArrayList typejava.util.ArrayList /typeAlias aliasLinkedList typejava.util.LinkedList //typeAliases
/configuration实体类
package com.example.enums;public enum UserSexEnum {MAN, WOMAN
}package com.example.model;import com.example.enums.UserSexEnum;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID 1L;private Long id;private String userName;private String passWord;private UserSexEnum userSex;private String nickName;public User() {super();}public User(String userName, String passWord, UserSexEnum userSex) {super();this.passWord passWord;this.userName userName;this.userSex userSex;}public Long getId() {return id;}public void setId(Long id) {this.id id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord passWord;}public UserSexEnum getUserSex() {return userSex;}public void setUserSex(UserSexEnum userSex) {this.userSex userSex;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName nickName;}Overridepublic String toString() {return userName this.userName , pasword this.passWord , sex userSex.name();}}2.5 控制器
package com.example.web;import com.example.mapper.test1.User1Mapper;
import com.example.mapper.test2.User2Mapper;
import com.example.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;RestController
public class UserController {Autowiredprivate User1Mapper user1Mapper;Autowiredprivate User2Mapper user2Mapper;RequestMapping(/getUsers)public ListUser getUsers() {ListUser usersuser1Mapper.getAll();return users;}RequestMapping(/getUser)public User getUser(Long id) {User useruser2Mapper.getOne(id);return user;}RequestMapping(/add)public void save(User user) {user2Mapper.insert(user);}RequestMapping(valueupdate)public void update(User user) {user2Mapper.update(user);}RequestMapping(value/delete/{id})public void delete(PathVariable(id) Long id) {user1Mapper.delete(id);}}2.6 启动类
package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class SpringBootMybatisXmlMulidatasourceApplication {public static void main(String[] args) {SpringApplication.run(SpringBootMybatisXmlMulidatasourceApplication.class, args);}}2.7 测试
package com.example.mapper;import com.example.enums.UserSexEnum;
import com.example.mapper.test1.User1Mapper;
import com.example.model.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;RunWith(SpringRunner.class)
SpringBootTest
public class User1MapperTest {Autowiredprivate User1Mapper userMapper;Testpublic void testInsert() throws Exception {userMapper.insert(new User(aa, a123456, UserSexEnum.MAN));userMapper.insert(new User(bb, b123456, UserSexEnum.WOMAN));userMapper.insert(new User(cc, b123456, UserSexEnum.WOMAN));// Assert.assertEquals(3, userMapper.getAll().size());}Testpublic void testQuery() throws Exception {ListUser users userMapper.getAll();if (users null || users.size() 0) {System.out.println(is null);} else {System.out.println(users.size());}}Testpublic void testUpdate() throws Exception {User user userMapper.getOne(6l);System.out.println(user.toString());user.setNickName(neo);userMapper.update(user);Assert.assertTrue((neo.equals(userMapper.getOne(6l).getNickName())));}}package com.example.mapper;import com.example.enums.UserSexEnum;
import com.example.mapper.test2.User2Mapper;
import com.example.model.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;RunWith(SpringRunner.class)
SpringBootTest
public class User2MapperTest {Autowiredprivate User2Mapper userMapper;Testpublic void testInsert() throws Exception {userMapper.insert(new User(aa, a123456, UserSexEnum.MAN));userMapper.insert(new User(bb, b123456, UserSexEnum.WOMAN));userMapper.insert(new User(cc, b123456, UserSexEnum.WOMAN));// Assert.assertEquals(3, userMapper.getAll().size());}Testpublic void testQuery() throws Exception {ListUser users userMapper.getAll();if(usersnull || users.size()0){System.out.println(is null);}else{System.out.println(users.toString());}}Testpublic void testUpdate() throws Exception {User user userMapper.getOne(6l);System.out.println(user.toString());user.setNickName(neo);userMapper.update(user);Assert.assertTrue((neo.equals(userMapper.getOne(6l).getNickName())));}}