集成思路
1、让spring来管理数据源信息,sqlMapConfig.xml中就不需要加载数据源了。交给spring管理
2、让spring通过单例方式管理SqlSessionFactory,只需要一个SqlSessionFactory帮我们生成sqlsession即可。也就是需要sqlsession对象就让sqlsessionfactory生成。所以是单例方式。
3、让spring创建sqlsession bean。也就是通过SqlSessionFactory创建SqlSession,
4、如果是使用mapper代理开发的方式,那么持久层的mapper都需要由spring进行管理,spring和mybatis整合生成mapper代理对象。
步骤:
1.添加所需jar(另一篇文章里有)
2.将画框部分注释掉,由spring管理数据源和事务 conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 头文件约束 -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- mybatis的配置文件 -->
<configuration>
<!-- mybatis的mapper文件,每个xml配置文件对应一个接口 -->
<mappers>
<mapper resource="test/UserMapping.xml"/>
</mappers>
</configuration>
3.映射配置文件 UserMapping.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="com.mybatis.test.IUserOperaton">
<select id="findUserById" parameterType="int" resultType="com.mybatis.test.User">
select * from user where id = #{id}
</select>
</mapper>
4.db.properties(数据库连接信息)
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis
db.username=root
db.password=123456
5.整合spring的配置文件 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 引用Java配置文件 -->
<context:property-placeholder location="config/db.properties"/>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${db.driver}"></property>
<property name="url" value="${db.url}"></property>
<property name="username" value="${db.username}"></property>
<property name="password" value="${db.password}"></property>
<property name="maxActive" value="10"></property>
<property name="maxIdle" value="5"></property>
</bean>
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定mybatis的全局配置文件路径 -->
<property name="configLocation" value="config/conf.xml"></property>
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
开发原始Dao:
1.spring中配置userDao
<!-- 配置userDao,给UserDaoImpl中配置sqlSessionFactory,然后UserDaoImpl继承SqlSessionDaoSupport,
,它会自动帮我们创建出SqlSession对象,使用this.getSqlSession()获取该对象。 -->
<bean id="userDao" class="test.UserDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
2.userDao:接口
package test;
import daomain.User;
public interface UserDao {
public User findUserById(int id);
}
3.实现类
package test;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import daomain.User;
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
@Override
public User findUserById(int id) {
// TODO Auto-generated method stub
return this.getSqlSession().selectOne("test.SelectById",id);
}
}
4.测试:
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import daomain.User;
public class test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("config/applicationContext.xml");
UserDao ud = (UserDao)ac.getBean("userDao");
User user = ud.findUserById(1);
System.out.println(user);
}
}
项目结构:
Mapping实现
1.编写mapper接口
package test;
import daomain.User;
public interface UserMapper {
public User findUserById(int id);
}
2.编写mapper映射文件,注意两个要放在一起,名称要相同
<?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="test.UserMapper">
<select id="findUserById" parameterType="int" resultType="daomain.User">
select * from user where id = #{id}
</select>
</mapper>
3.spring中生成mapping代理对象
<!--
批量配置,这里是批量配置mapper代理,那么下面就不用配置id了。
我们想要获取哪个mapper代理用这个格式:类名首字母小写
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="test"></property>
</bean>
4.测试
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import daomain.User;
public class test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
ApplicationContext ac = new ClassPathXmlApplicationContext("config/applicationContext.xml");
UserMapper um = (UserMapper)ac.getBean("userMapper");
User user = um.findUserById(1);
System.out.println(user);
}
}
项目结构:
参考原文:http://www.cnblogs.com/whgk/p/7133340.html