在这里插入代码片
<!-- 启动springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
//配置application.properties
spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test1.url=jdbc:mysql://192.168.1.25/szch3?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
spring.datasource.test1.username=root
spring.datasource.test1.password=szch3
spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.test2.url=jdbc:mysql://192.168.1.20/szch3?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
spring.datasource.test2.username=root
spring.datasource.test2.password=szch3
项目结构
Configuration数据源配置1
package com.szch3.configuration;
import javax.sql.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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
@Configuration
@MapperScan(basePackages = { "com.szch3.mapper.source1" }, sqlSessionFactoryRef = "test1SqlSessionFactory")
public class DataSource1Config { // 注入到这个容器
@Bean(name = "test1DataSource") // 表示取application.properties配置文件中的前缀
@ConfigurationProperties(prefix = "spring.datasource.test1")
@Primary
public DataSource testDataSouce() {
return DataSourceBuilder.create().build();
}
@Bean(name = "test1SqlSessionFactory")
@Primary
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(
// 设置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/source1/*.xml"));
return bean.getObject();
} // 配置事物
@Bean(name = "test1TransactionManager")
@Primary
public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "test1SqlSessionTemplate")
@Primary
public SqlSessionTemplate testSqlSessionTemplate(
@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
Configuration数据源配置2
package com.szch3.configuration;
import javax.sql.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.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
@Configuration
@MapperScan(basePackages = { "com.szch3.mapper.source2" }, sqlSessionFactoryRef = "test2SqlSessionFactory")
public class DataSource2Config { // 注入到这个容器
@Bean(name = "test2DataSource") // 表示取application.properties配置文件中的前缀
@ConfigurationProperties(prefix = "spring.datasource.test2")
public DataSource testDataSouce() {
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(
// 设置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/source2/*.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) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
Controller层
controller层
package com.szch3.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.szch3.common.SysResult;
import com.szch3.pojo.UserInfo;
import com.szch3.service.source1.IndexService;
import com.szch3.service.source2.IndexService2;
@Controller
public class IndexController {
@Autowired
private IndexService indexService;
@Autowired
private IndexService2 indexService2;
/*
* 增
*/
@RequestMapping("insert")
@ResponseBody
public SysResult indexInsert(String account,String password) {
int i=indexService.insert(account,password);
return SysResult.oK();
}
/*
* 删
*/
@RequestMapping("delete")
@ResponseBody
public SysResult indexDelete(String account) {
int i=indexService.delete(account);
return SysResult.oK();
}
/*
* 改
*/
@RequestMapping("update")
@ResponseBody
public SysResult indexUpdate(UserInfo userInfo) {
indexService.indexUpdate(userInfo);
return SysResult.oK();
}
/*
* 查
*/
@RequestMapping("select")
@ResponseBody
public SysResult login(String account,String password) {
UserInfo user=indexService2.select(account,password);
return SysResult.oK(user);
}
}
Service层增、删、改(1)
在这里插入代码片
package com.szch3.service.source1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.szch3.mapper.source1.IndexMapper;
import com.szch3.pojo.UserInfo;
@Service
public class IndexService {
@Autowired
private IndexMapper indexMapper;
@Transactional(transactionManager =("test1TransactionManager"))
public int insert(String account, String password) {
// TODO Auto-generated method stub
UserInfo userInfo = new UserInfo();
userInfo.setAccount(account);
userInfo.setPwd(password);
userInfo.setNickname("刘备");
int insert = indexMapper.insert(userInfo);
return insert;
}
@Transactional(transactionManager =("test1TransactionManager"))
public int delete(String account) {
int i=indexMapper.indexDelete(account);
return i;
}
@Transactional(transactionManager =("test1TransactionManager"))
public void indexUpdate(UserInfo userInfo) {
String account=userInfo.getAccount();
String pwd = userInfo.getPwd();
String nickname = userInfo.getNickname();
Boolean sex = userInfo.getSex();
int updateByExample = indexMapper.indexUpdate(account, pwd,nickname,sex);
System.err.println(updateByExample);
}
}
Service层查询(2)
package com.szch3.service.source2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.szch3.mapper.source2.IndexMapper2;
import com.szch3.pojo.UserInfo;
@Service
public class IndexService2 {
@Autowired
private IndexMapper2 indexMapper2;
@Transactional(transactionManager =("test2TransactionManager"))
public UserInfo select(String account, String password) {
//查询用户名下的信息
//根据账号查询密码
System.err.println("account:"+account+",password:"+password);
UserInfo userInfo=indexMapper2.selectPassword(account,password);
System.err.println(userInfo.toString());
return userInfo;
}
}
Mapper层增、删、改(1)
package com.szch3.mapper.source1;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import com.szch3.common.MyMapper;
import com.szch3.pojo.UserInfo;
@Mapper
@CacheConfig(cacheNames = "UserInfo")//缓存需要的注解,如果不使用缓存,可以去掉
public interface IndexMapper extends MyMapper<UserInfo>{
//@ Cacheable(key = “'leader'+#p0 +#p1 +#p2” )一般用法,#p0表示方法的第一个参数,#p1表示第二个参数,以此类推。
/**
* 删除用户的信息,并删除缓存
* @param account
* @return
*/
@CacheEvict(key ="'users'+#p0",allEntries=true)//缓存需要的注解,如果不使用缓存,可以去掉
@Delete("delete from users where account=#{account}")//缓存需要的注解,如果不使用缓存,可以去掉
int indexDelete(String account);
/**
* 修改用户的信息,并跟新缓存
* @param account
* @param pwd
* @param nickName
* @param sex
* @return
*/
@CachePut(key = "'users'+#p0")//缓存需要的注解,如果不使用缓存,可以去掉
int indexUpdate(@Param("account")String account ,@Param("password")String pwd,@Param("nickName")String nickName,@Param("sex")Boolean sex);
}
Mapper层查询(2)
在这里插入代码片
package com.szch3.mapper.source2;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import com.szch3.common.MyMapper;
import com.szch3.pojo.UserInfo;
@Mapper
@CacheConfig(cacheNames = "UserInfo")//缓存需要的注解,如果不使用缓存,可以去掉
public interface IndexMapper2 extends MyMapper<UserInfo>{
/**
* 查询用户的信息,并写入缓存
* @param account
* @param password
* @return
*/
@Cacheable(key="'users'+#p0")//缓存需要的注解,如果不使用缓存,可以去掉
UserInfo selectPassword(@Param("account")String account,@Param("password")String password);
}
数据源的配置XML1
在这里插入代码片
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.szch3.mapper.source1.IndexMapper">
<!-- <select id="selectPassword" resultType="com.szch3.pojo.UserInfo">
select * from users where account=#{account} and pwd=#{password}
</select> -->
<update id="indexUpdate">
update users set pwd =#{password},nickname=#{nickName},sex=#{sex} where account=#{account};
</update>
</mapper>
数据源的配置XML2
在这里插入代码片
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.szch3.mapper.source2.IndexMapper2">
<select id="selectPassword" resultType="com.szch3.pojo.UserInfo">
select * from users where account=#{account} and pwd=#{password}
</select>
</mapper>