公司数据层框架最近开始用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
}
<?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>
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 就可以直接查询了