====== Spring+Mybatis 多数据源配置_1 ====== ===== 方法描述 ===== 采用spring配置文件直接配置多个数据源,指定某个路径下的mapper文件使用哪个数据源,分别配置事务管理 ===== 优缺点 ===== - 不支持分布式事务,一个事务中不能操作多个数据源 - 配置简单,但是不灵活 - 适合两个数据库没有相关性的情况 - 不适合master-slave性的多数据源的配置,需要根据业务类型进行细致配置,比如增删改在master上,不允许有主从同步时间延时的查询在master上,耗时查询在slave上等等 - vo,dao,mapper,service都需要两套 ===== 主要代码 ===== ==== application-context.xml ==== ==== application-local-profile.xml ==== 数据源配置,主要用于开发测试环境 ==== application-test-profile.xml ==== JNDI数据源,在生产环境使用应用服务器的数据库连接池 ==== jdbc.properties ==== #本地环境主数据源 master.local.jdbc.driverClassName=com.mysql.jdbc.Driver master.local.jdbc.url=jdbc:mysql://127.0.0.1:3306/record?useUnicode=true&characterEncoding=UTF-8&useOldAlias master.local.jdbc.username=root master.local.jdbc.password=root #本地环境备数据源 slave.local.jdbc.driverClassName=com.mysql.jdbc.Driver slave.local.jdbc.url=jdbc:mysql://127.0.0.1:3306/record_slave?useUnicode=true&characterEncoding=UTF-8&useOldAlias slave.local.jdbc.username=root slave.local.jdbc.password=root ==== MasterUserService.java ==== package com.gxx.record.service.master; import com.gxx.record.base.master.vo.User; /** *
*
Title:
*
* 用户服务接口 *
*
Description:
*
*

none *

*
* * @author Administrator * @version 1.0, 2015年6月18日 * @since record * */ public interface MasterUserService { /** * 新增用户 * @param user */ public void doSaveUser(User user); /** * 根据姓名查用户 * @param name * @return */ public User getUserByName(String name); }
==== MasterUserServiceImpl.java ==== package com.gxx.record.service.master.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.gxx.record.base.master.dao.UserMapper; import com.gxx.record.base.master.vo.User; import com.gxx.record.service.master.MasterUserService; /** *
*
Title:
*
* 用户服务实现类 *
*
Description:
*
*

none *

*
* * @author Administrator * @version 1.0, 2015年6月18日 * @since record * */ @Service("masterUserService") public class MasterUserServiceImpl implements MasterUserService { @Autowired @Qualifier("masterUserMapper") private UserMapper userDao; /** * 新增用户 * @param user */ public void doSaveUser(User user) { userDao.insert(user); } /** * 根据姓名查用户 * @param name * @return */ public User getUserByName(String name) { return userDao.getUserByName(name); } }
==== UserMapper.java ==== package com.gxx.record.base.master.dao; import org.springframework.stereotype.Repository; import com.gxx.record.base.master.vo.User; @Repository("masterUserMapper") public interface UserMapper { int deleteByPrimaryKey(Integer id); int insert(User record); int insertSelective(User record); User selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(User record); int updateByPrimaryKey(User record); /** * 根据姓名查用户 * @param name * @return */ User getUserByName(String name); } ==== User.java ==== package com.gxx.record.base.master.vo; public class User { private Integer id; private String name; private String password; private String createDate; private String createTime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); } public String getCreateDate() { return createDate; } public void setCreateDate(String createDate) { this.createDate = createDate == null ? null : createDate.trim(); } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime == null ? null : createTime.trim(); } } ==== UserMapper.xml ==== id, name, password, create_date, create_time delete from user where id = #{id,jdbcType=INTEGER} insert into user (id, name, password, create_date, create_time) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{createDate,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}) insert into user id, name, password, create_date, create_time, #{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{createDate,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}, update user name = #{name,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, create_date = #{createDate,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=VARCHAR}, where id = #{id,jdbcType=INTEGER} update user set name = #{name,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, create_date = #{createDate,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER} ===== 附上代码 ===== {{:分享:技术:数据源:record.zip|}}