Spring整合mybatis思路及步骤

 

                        集成思路

        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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值