现在的位置: 首页 > 综合 > 正文

MyBatis 整合 Spring开发

2014年08月15日 ⁄ 综合 ⁄ 共 2285字 ⁄ 字号 评论关闭

公司数据层框架最近开始用Mybatis,之前我一直用的是Hibernate的。

所以我也是刚开始学这部分,写的不好还请见谅。

Mybatis有两种配置SQL的方式,一种是在配置文件,也就是XML里面写SQL,另外一种是通过注解的方式配置的,我这里主要是XML方式的配置

新建Java 实体类 UserInfo.java

package cn.com.sunyard.model;

import java.util.Date;

public class UserInfo {
	
	private Integer userId;
	private String organId;
	private String userName;
	private Date startDate;
	private Date endDate;
	private String password;
	private String repassword;
	private String leaderFlag;
	private String roleId;
	private String useFlag;
	
	//constructor……
	// getXX  &&  set XX
}

编写注射器文件UserInfoMapper,xml       这里我只写了一个简单的查询方法

<?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="cn.com.sunyard.mapper.UserInfoMapper">
	<select id="selectUserInfoByUserID" parameterType="int" resultType="UserInfo">
		select * from userinfo where userid = #{userid}
	</select>
</mapper>

在Spring配置文件中添加如下代码:

1:配置sqlSessionFactory   该对象是用于生成sqlSessionTemplate

	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property><!-- dataSource为配置好的数据源 -->
		<property name="configLocation" value="SqlMapConfig.xml"></property><!-- 配置文件路径,不可少 -->
	</bean>

2:为sqlSessionFactory 的 dataSource 添加Spring事务管理

	<!-- Spring DataSource TransactionManager
		 这里的dateSource必须和sqlSessionFactory 为同一个数据源,否则事务管理器无法工作 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

3:根据sqlSesionFactory  注册 sqlSessionTemplate

	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>

新建UserServiceImpl 

package cn.com.sunyard.service.myBatis;

import java.util.ArrayList;
//import……

public class UserServiceSpringImpl extends SqlSessionDaoSupport implements UserService{

	@Override
	public UserInfo findUser(Integer userId) {
		return (UserInfo) getSqlSession().selectOne("cn.com.sunyard.mapper.UserInfoMapper.selectUserInfoByUserID", userId);
	}
}

这里的SqlSessionDaoSupport 是Mybatis提供的一个父类,比较好用的,mybatis告诉我们必须为该类注射一个sqlSessionFactory 或者 sqlSessionTemplate,这里我们需要在Spring文件中如下配置:

	<bean id="userService" class="cn.com.sunyard.service.myBatis.UserServiceSpringImpl" scope="singleton">
		<property name="sqlSessionTemplate" ref="sqlSession"></property>
	</bean>

直接引用配置好的sqlSessionTemplate

之后我们获取spring的 service bean 就可以直接查询了奋斗

抱歉!评论已关闭.