Mybatis3.2和Spring3.x整合----Myb…
2015-09-09 10:03
555 查看
1. 工程主要文件
有了spring我们就不需要MybatisUtil.java了。SqlSessionFactory和SqlSession直接由spring提供。
2. 主要jar包
spring-core-3.0.0.RELEASE.jar spring-context-3.0.0.RELEASE.jar spring-beans-3.0.0.RELEASE.jar spring-asm-3.0.0.RELEASE.jar log4j-1.2.14.jar commons-logging-1.1.1.jar spring-expression-3.0.0.RELEASE.jar persistence.jar spring-jdbc-3.0.0.RELEASE.jar spring-orm-3.0.0.RELEASE.jar spring-tx-3.0.0.RELEASE.jar c3p0-0.9.1.2.jar commons-dbcp.jar commons-pool.jar jotm.jar xapool.jar spring-aop-3.0.0.RELEASE.jar aopalliance-1.0.jar aspectjweaver-1.6.2.jar aspectjlib-1.6.2.jar aspectjrt-1.6.2.jar cglib-nodep-2.2.jar spring-aspects-3.0.0.RELEASE.jar spring-instrument-3.0.0.RELEASE.jar spring-instrument-tomcat-3.0.0.RELEASE.jar mybatis-3.2.0.jar mybatis-spring-1.1.1.jar mysql-connector-java-3.1.13-bin.jar log4j-1.2.11.jar |
3. 主要文件 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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <context:annotation-config /> <context:component-scan base-package="com.edu.mybatis_spring" /> <tx:jta-transaction-manager /> <!-- 读取数据库连接信息配置文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- 下面的name属性的值是固定的,可以在spring的源码里看到, 在propertyPlaceholdConfigurer的间接父类 org.springframework.core.io.support.PropertiesLoaderSupport 里有locations的getter和setter方法,location是一个Resource数组。 如果是用其他名字回报异常: Error creating bean with name 'org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0' defined in class path resource ...... --> <property name="locations"> <value>classpath:resources/jdbc.properties</value> </property> </bean> <!-- 配置数据源 --> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- 配置Mybatis使用的数据源 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 指定mybatis主配置文件的位置并读取使用,可以不配置不是使用这个文件, 就像SSH整合时不需要hibernate.cfg.xml文件一样那些配置都可以在spring配置文件里配置 --> <!-- 该属性用来指定MyBatis的XML配置文件路径,跟Spring整合时,编写MyBatis映射文件的目的无非是配置一下typeAlias、setting之类的 元素。不用在其中指定数据源,或者事务处理方式。就算配置了也会被忽略。因为这些都是使用Spring中的配置。 当然如果你不打算添加typeAlias 之类的设置的话,你连MyBatis的配置文件都不用写,更不用配置这个属性了 但是个人觉得还用着好啊!因为在对应的mapper文件里的 parameterType="User" 属性就不用全限定名("com.edu.mybatis_spring.mapper.UserMapper")了省事啊。 --> <!--<property name="configLocation" value="resources/mybatis-config.xml"></property> --> <property name="configLocation" value="resources/mybatis-config.xml"></property> </bean> <!-- 用spring的AOP给代码添加事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > <property name="dataSource" ref="dataSource" /> </bean> <!-- 用spring AOP给service层的方法添加事务管理 --> <aop:config> <aop:pointcut id="bussinessService" expression="execution(public * com.edu.mybatis_spring.dao.*.*(..))" /> <aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="add*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!-- 前面的配置除了某些文件的路径外基本是固定的, 下面的配置为mapper映射文件交给spring管理, 并且为每个mapper都注入了SqlSession的实例 --> <!-- 注册mybatis的mapper方式 1 --> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <!-- mapperInterface固定名字,换其他的名字不行, 因为在 org.mybatis.spring.mapper.MapperFactoryBean类里 有 mapperInterface 的getter和setter方法, 而不可能有你自定义其他名字和对应的getter和setter方法, 没有setter方法spring就无法注入,可以在mybatis-spring-1.1.1.jar里看到 --> <property name="mapperInterface" value="com.edu.mybatis_spring.mapper.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <!-- 注册mybatis的mapper方式 2 不指定mapper,使用自动扫描方式注册各个Mapper , 但是暂时不可用可能是spring和mybatis的版本问题 --> <!--<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage"> <value>com.edu.mybatis_spring.mapper</value> </property> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> --> </beans> |
4. Mybatis-config.xml
为了配置简洁还是使用了这个配置文件,当然这些配置都是可以全都放在spring的配置文件里的。<?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"> <configuration> <typeAliases> <!-- 导入此包下的所有类,相当于注册。。 --> <package name="com.edu.mybatis_spring.model"/> </typeAliases> </configuration> |
5. UserDaoImpl.xml
package com.edu.mybatis_spring.dao.impl; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.edu.mybatis_spring.mapper.UserMapper; import com.edu.mybatis_spring.model.User; import com.edu.mybatis_spring.util.MybatisUtil; public class UserDaoImpl implements UserMapper { @Override public void addUser(User user) { //UserMapper userMapper = (UserMapper) MybatisUtil.getBean(UserMapper.class); ApplicationContext ctx = new ClassPathXmlApplicationContext("resources/applicationContext.xml"); UserMapper userMapper = ctx.getBean(UserMapper.class); userMapper.addUser(user); } @Override public User getUserByName(String username) { return ((UserMapper) MybatisUtil.getBean(UserMapper.class)).getUserByName(username); } } |
6. 结果
可以看到这两个方式测试通过了,我们在看数据库。在数据库中看到了我们测试添加的数据。可以说整个过程是成功的。
相关文章推荐
- Mybatis3.2和Spring3.x整合----Myb…
- struts2 简单注解配置实现用户登录
- spring security总结 太有用了!!
- spring security+cas 中…
- java多线程实例
- Java&nbsp;IO&nbsp;操作
- 修改MyEclipse中的Jsp页面模…
- 修改MyEclipse中的Jsp页面模…
- Java IO 操作
- java synchronized详解【转】
- Java中对象序列化与反序列化详解
- JAVA日期
- Java代码实现有序向量的二分查找
- Java 模板权重随机
- 学习日志---图之最小生成树算法
- 如何取消eclipse设置项目的默认路径
- Java NIO -- FileChannel
- Jboss7使用指定jdk
- Eclipse 连接MySQl数据库总结
- 三分钟理解Java中字符串(String)的存储和赋值原理