mybatis--整合spring

来源:互联网 发布:贪心算法教学视频 编辑:程序博客网 时间:2024/06/02 22:57

mybatis整合spring

一、整合思路

1、  数据源信息交给spring管理

2、  SqlSessionFactory交给spring进行单例管理

3、  由spring来管理原始dao的实现类或者mapper代理的代理类。


二、需求

使用原始dao方式和mapper代理方式实现以下功能:

根据用户ID查询商品信息


三、工程搭建

l  Mysql的驱动包

l  Mybatis的核心包和依赖包

l  Mybatis和spring的整合包

l  Spring的包

l  dbcp数据库连接池包





四、具体整合

1、整合配置文件

(1)mybatis

在config下,创建mybatis目录,然后创建SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 自定义别名 --><typeAliases><package name="com.itheima.ms.po" /></typeAliases><!-- 加载映射文件 --><mappers><mapper resource="mybatis/sqlmap/User.xml" /></mappers></configuration>

将db.properties和log4j.properties拷贝到config目录下。


(2)spring

在config下,创建spring目录,然后创建applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"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-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "><!-- 加载java的配置文件 --><!-- 如果是web工程 ,就需要加classpath --><context:property-placeholder location="db.properties" /><!-- 创建数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="${db.driver}" /><property name="url" value="${db.url}" /><property name="username" value="${db.username}" /><property name="password" value="${db.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean><!-- SqlSessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 指定mybatis的全局配置文件的路径 --><property name="configLocation" value="mybatis/SqlMapConfig.xml"></property><!-- 数据源 --><property name="dataSource" ref="dataSource"></property></bean></beans>

2、整合代码

(1)原始dao开发方式
1.1映射文件:

在config/mybatis下创建sqlmap,然后创建User.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="test"><!-- 根据用户ID查询用户信息 --><select id="findUserById" parameterType="int" resultType="user">SELECT * FROM USER WHERE id =#{id}</select></mapper>

1.2Dao代码
Dao接口:
public interface UserDao {// 1、 根据用户ID查询用户信息public User findUserById(int id) throws Exception;}

Dao实现类:
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {@Overridepublic User findUserById(int id) throws Exception {return this.getSqlSession().selectOne("test.findUserById", id);}}

1.3配置dao实现类:

在applicationContext.xml中配置UserDao实现类

<!-- UserDao --><bean id="userDao" class="com.itheima.ms.dao.UserDaoImpl"><!-- 依赖注入SqlSessionFactory --><property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean>

1.4测试代码:
public class UserDaoTest {private ApplicationContext applicationContext;@Beforepublic void setUp() throws Exception {applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");}@Testpublic void testFindUserById() throws Exception {// 创建UserDaoUserDao dao = (UserDao) applicationContext.getBean("userDao");User user = dao.findUserById(1);System.out.println(user);}}


(2)Mapper代理方式
2.1映射文件UserMapper.xml:

将映射文件放到UserMapper接口的同包下

<?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.itheima.ms.mapper.UserMapper"><!-- 根据用户ID查询用户信息 --><select id="findUserById" parameterType="int" resultType="User">SELECT * FROM USER WHERE id =#{id}</select></mapper>

2.2Mapper接口
public interface UserMapper {// 1、 根据用户ID查询用户信息public User findUserById(int id) ;}

2.3配置mapper代理类
在applicationContext.xml中配置:
(1)单个mapper代理类配置
<!-- 配置UserMapper代理类 --><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><!-- 设置代理类的接口 --><property name="mapperInterface" value="com.itheima.ms.mapper.UserMapper"></property><!-- 依赖注入SqlSessionFactory --><property name="sqlSessionFactory" ref="sqlSessionFactory"></property></bean>


(2)批量设置mapper代理类
<!-- 批量配置mapper代理类,默认bean的id为类名首字母小写 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 配置扫描的包 --><property name="basePackage" value="com.itheima.ms.mapper"></property><!-- 默认不需要配置SqlSessionFactory(只有一个SqlSessionFactory时),单独配置也可以 --><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>


2.4测试
public class UserMapperTest {private ApplicationContext applicationContext;@Beforepublic void setUp() throws Exception {applicationContext = new ClassPathXmlApplicationContext("spring/applicationContext.xml");}@Testpublic void testFindUserById() {UserMapper mapper = (UserMapper) applicationContext.getBean("userMapper");User user = mapper.findUserById(1);System.out.println(user);}}



0 0
原创粉丝点击