Mybatis学习笔记---day04 mybatis与spring整合
来源:互联网 发布:怎样加入淘宝网店 编辑:程序博客网 时间:2024/06/05 07:35
一:Mybatis和Spring的整合
1.使用Eclipse创建动态项目
2.导入整合的jar包
3.创建spring的核心配置文件并配置头信息
<?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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> </beans>
4.配置事务、数据源、扫描注解、读取properties文件、mybatis工厂等等
此处因为需要配置的文件信息较多,因此将各种配置文件拆分到不同的文件夹中,在application-context.xml中统一导入文件夹下的所有.xml文件
a、在application-context.xml中导入所有.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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 导入事务、数据源、properties等所有配置文件 --> <import resource="config/*.xml"/> </beans>
b、在src下创建config文件夹
c、配置数据库连接jdbc.xml文件
(1)、在config下创建jdbc.xml文件
(2)、找到要配置的数据源的类
(3)、在jdbc.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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置连接池,本次使用c3p0 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 驱动 --> <property name="driverClass" value="${driverClass}"/> <!-- url --> <property name="jdbcUrl" value="${jdbcUrl}"/> <!-- 用户名 --> <property name="user" value="${user}"/> <!-- 密码 --> <property name="password" value="${pasword}"/> </bean> </beans>
(4)、配置jdbc.properties文件
driverClass=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8user=rootpassword=123
d、在config中配置properties.xml文件来读取*.properties文件
<?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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置读取项目中的.properties文件 --> <!-- 为了使其扩展性好,应该使用集合的方式 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- properties文件的集合 --> <property name="locations"> <list> <!-- 每一个properties文件的位置 --> <value>classpath:jdbc.properties</value> </list> </property> </bean> </beans>
e、配置扫描注解的.xml文件--anontation.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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置自动扫描注解 ,在使用SSM框架中,细分化时, spring只负责扫描service层的注解,而Dao是接口,不需要扫描 controller层由springmvc负责扫描,因此,此处如果想更加细致一点, 应该将 @Controller 注解过滤--> <context:component-scan base-package="com.mybatis"> <!-- 选择过滤的注解,即 @Controller --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> </beans>
f、配置事务的.xml文件--transaction.xml
前提:
找到控制jdbc数据源事务的类
在transaction.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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置数据源的事务,使用的是注解式 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/> </bean> <!-- 开启扫描事务的注解 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
g、配置Mybatis的核心配置文件 -- mybatis-config.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><!-- 单个别名定义 --><typeAlias alias="User" type="com.mybatis.pojo.User"/><!-- 配置包下自动别名 --><package name="com.mybatis.pojo"/></typeAliases><!-- 指定Mapper的位置 --><mappers><package name="com.mybatis.mapper"/></mappers></configuration>
h、配置config中的mybatis.xml配置文件
文件位置:
找到spring中管理mybatis的sqlSessionFactory工厂的类
配置文件内容
<?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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置mybatis的工厂,sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 指定mybatis核心配置文件位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> </beans>
5.测试整合
a、使用原始Dao和Dao实现类进行测试
(1)、编写Dao接口和Dao接口实现类
package com.mybatis.dao;import org.mybatis.spring.support.SqlSessionDaoSupport;import com.mybatis.pojo.User;/** * 原始Dao开发的实现类 * SqlSessionDaoSupport是用来产生sqlSessionFactory工厂的,其中已经包含 * @author Administrator * */public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {public User selectUserById(Integer id) {return this.getSqlSession().selectOne("userDao.selectUserById",id);}}
(2)、在mybaits.xml中初始化UserDaoImpl
<?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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置mybatis的工厂,sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 指定mybatis核心配置文件位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- 1.使用原始Dao开发的配置,即有接口有实现类 --> <!-- 配置dao接口的实现类 --> <bean id="userDao" class="com.mybatis.dao.UserDaoImpl"> <!-- 注入工厂,其实是注入到UserDaoImpl继承的SqlSessionDaoSupport父类中 --> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> </beans>
(3)、配置mybatis-config.xml文件中的mapper扫描方式
<?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><!-- 单个别名定义 --><typeAlias alias="User" type="com.mybatis.pojo.User"/><!-- 配置包下自动别名 --><package name="com.mybatis.pojo"/></typeAliases><!-- 使用原始Dao开发 --><mappers><mapper resource="sqlMap/UserMapper.xml"/></mappers>
(4)、编写Mapper映射文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="userDao"><!-- 根据ID获取用户对象 --><select id="selectUserById" parameterType="Integer" resultType="com.mybatis.pojo.User">select * from user where id = #{id}</select>
(5)、编写Junit单元测试类
package com.mybatis.junit;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.mybatis.dao.UserDao;import com.mybatis.pojo.User;/** * sm整合的junit单元测试类 * @author Administrator * *///配置扫描spring核心配置文件@RunWith(SpringJUnit4ClassRunner.class)//指定spring核心配置文件位置,否则在junit单元测试时无法读取配置文件@ContextConfiguration(locations = {"classpath:application-context.xml"})public class SMJuint {@Autowiredprivate UserDao userDao;@Testpublic void test1(){User user = userDao.selectUserById(29);System.out.println(user);}}
b、使用mapper接口的动态代理进行测试 -- 只需要Dao接口,不需要实现类
(1)、在mybatis.xml中配置动态代理UserDao接口
<?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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置mybatis的工厂,sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 指定mybatis核心配置文件位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- 1.使用Dao接口的动态代理类进行开发 --> <!-- 配置dao接口的动态代理 --> <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <!-- 指定需要代理的接口,即UserDao --> <property name="mapperInterface" value="com.mybatis.dao.UserDao"/> <!-- 注入工厂 --> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> </beans>
(2)、其他要求
Mapper映射文件的namespace是接口的全类路径
c、动态代理升级版
不需要指定接口,只需要将接口和Mapper映射文件放在同一个包下,通过扫描基础包即可,此时不需要再mybatis的核
心配置文件中配置Mapper映射文件的位置,因为在mybatis.xml文件中已经配置了扫描基础包
(1)、mybatis.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: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"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <!-- 配置mybatis的工厂,sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 指定mybatis核心配置文件位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- 使用Dao接口的动态代理类升级版进行开发,企业中推荐 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 配置要扫描的mapper映射文件的基本包 --> <property name="basePackage" value="com.mybatis.dao"/> </bean> </beans>
0 0
- Mybatis学习笔记---day04 mybatis与spring整合
- Spring与MyBatis整合(学习笔记)
- mybatis学习笔记(十一)spring与mybatis整合
- MyBatis学习笔记(十二)spring与Mybatis整合事务
- Mybatis学习笔记-Mybatis与Spring的整合
- Spring与mybatis整合---Mybatis学习笔记(十一)
- Spring与mybatis整合---Mybatis学习笔记(十一)
- spring 与 mybatis 整合笔记
- mybatis-spring整合笔记
- Spring注解整合(hibernate+mybatis) 学习笔记
- Spring+Mybatis整合学习
- spring与mybatis整合
- 整合spring与myBatis
- mybatis 与 spring 整合
- mybatis与spring整合
- mybatis与spring整合
- mybatis与spring整合
- spring与mybatis整合
- CGRect, CGPoint,CGSize,CGAffineTransform,UIEdgeInsets,UIOffset与NSValue的相互转换
- 06.数组
- Apache2 httpd.conf 配置详解 (二)
- AngularJs过滤器
- gitlab sshkey
- Mybatis学习笔记---day04 mybatis与spring整合
- LeetCode | Merge Sorted Array
- IJCAI 10年(2007-2016)最佳论文合集
- 打字练习之进阶
- atoi() 与 itoa()函数的内部实现
- Codeforces Round #367 (Div. 2) Vasiliy's Multiset(字典树)
- Codeforces Round #367 (Div. 2) D Vasiliy's Multiset(字典树)
- 记昨日上线突发情况以及解决
- EditText加下划线