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