MyBatis-Spring整合之方式1
导入相关包:Spring包:Spring架包 MyBatis包:MyBatis架包 整合包:Mybatis-Spring整合包
编写实体类User,实体类的sql映射文件,映射内容如下:
<?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">
<typeAliases>
<package name="com.lxy.entity"/>
</typeAliases> <mapper namespace="com.lxy.entity.UserMapper">
<select id="selectUsers" resultType="com.lxy.entity.User">
select * from users
</select>
</mapper>
创建实体类的dao接口UserDao和接口的实现类UserDaoImp,在实现类里创建一个sqlSessionTemplate类变量sqlSession,设置sqlSession的set方法。在实现接口的方法中调用sqlSession的selectList方法并返回代码如下:
public class UserDaoImp implements UserDao { private SqlSessionTemplate sqlSession;
@Override
public List<User> selectUser() {
//参数为映射文件的namespace+查询语句的id
return sqlSession.selectList("com.lxy.entity.UserMapper.selectUsers");
} public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
} }
Mybatis工具类要交由spring容器来处理和实例化,不再需要另外编写。此时的项目结构如图:

在Spring的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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/springExercise"/>
<property name="username" value="root"/>
<property name="password" value="myPassword"/>
</bean> <!--配置sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean> <!--sqlSessionFactory利用构造器引用了Factory-->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean> <bean id="userDao" class="com.lxy.dao.imp.UserDaoImp">
<property name="sqlSession" ref="sqlSessionTemplate" />
</bean>
编写测试主方法,如:
public class test {
public static void main(String[] args) throws IOException {
ApplicationContext context=new ClassPathXmlApplicationContext("Beans.xml");
UserDao userDao= (UserDao) context.getBean("userDao");
System.out.println(userDao.selectUser().size());
}
}
配置声明式事务,为了使用事务,先修改mapper文件的映射,添加不同的操作:
<mapper namespace="com.lxy.entity.UserMapper">
<select id="selectUsers" resultType="com.lxy.entity.User">
select * from users
</select>
<insert id="add" parameterType="User" useGeneratedKeys="true">
insert into users(name,pwd) values(#{name},#{pwd})
</insert>
<delete id="remove">
deletes from users where id=#{id}
</delete>
</mapper>
需要修改Beans.xml的头部beans配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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/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">
再添加事务的和aop的配置:
<!--声明式事务-->
<!--配置事务管理器-->
<bean id="txManger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务的通知-->
<tx:advice id="txAdvice" transaction-manager="txManger">
<tx:attributes>
<!--配置哪些方法使用什么样的事务,配置事务的传播特性-->
<!--REQUIRED表示如果没有当前事务就开启一个事务-->
<tx:method name="add" propagation="REQUIRED"/>
<!--带*号匹配所有以remove为开头的方法名字-->
<tx:method name="remove*" propagation="REQUIRED"/>
<!--使用read-only为true,只读就不会提交事务-->
<tx:method name="selectUsers" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice> <aop:config>
<!--这里的表达式中实际运用时应该配置在service层,这里是因为没有写出service所以就使用dao层-->
<aop:pointcut id="pointCut" expression="execution(* com.lxy.dao.imp.*.*(..))"/>
<aop:advisor pointcut-ref="pointCut" advice-ref="txAdvice"/>
</aop:config>
MyBatis-Spring整合之方式1的更多相关文章
- springMVC+mybatis+spring整合案例
		
1.web.xml a:配置spring监听,使web容器在启动时加载spring的applicationContext.xml <listener> <listener-class ...
 - springMVC+MyBatis+Spring 整合(3)
		
spring mvc 与mybatis 的整合. 加入配置文件: spring-mybaits.xml <?xml version="1.0" encoding=" ...
 - SpringMVC+Mybatis+Spring整合
		
Maven引入需要的JAR包 pom.xml <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEA ...
 - MyBatis Spring整合配置映射接口类与映射xml文件
		
本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...
 - Mybatis——Spring整合
		
一.引入依赖 Spring的相关jar包 mybatis-3.4.1.jar mybatis-spring-1.3.0.jar mysql-connector-java-5.1.37-bin.jar ...
 - springMVC+MyBatis+Spring 整合(4) ---解决Spring MVC 对AOP不起作用的问题
		
解决Spring MVC 对AOP不起作用的问题 分类: SpringMVC3x+Spring3x+MyBatis3x myibaits spring J2EE2013-11-21 11:22 640 ...
 - Mybatis+Spring整合后Mapper测试类编写
		
public class UserMapperTest { private ApplicationContext applicationContext; @Before public void ini ...
 - springmvc+mybatis+spring 整合源码项目
		
A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等 ...
 - springmvc+mybatis+spring 整合
		
获取[下载地址] [免费支持更新]三大数据库 mysql oracle sqlsever 更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] ...
 - springmvc+mybatis+spring 整合 bootstrap
		
获取[下载地址] [免费支持更新]三大数据库 mysql oracle sqlsever 更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] ...
 
随机推荐
- 324. 摆动排序 II(三路划分算法)
			
题目: 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序. 示例 1: 输入: nums = [ ...
 - php中构建树状图
			
/** * 指定根层级的树状图 * @param array $list 初始数组 * @param int $root 最上级一条数据的id * @param string $pk 每一条数据的id ...
 - Linux 虚拟机共享目录
			
1. 开启linux虚拟机 2. 菜单“虚拟机” -------“重新安装 Vm tools” 3. 桌面看到 VmTools 安装盘 4. 安装 5. 设置中添加共享目录 5. ...
 - IntelliJ IDEA常规配置教程
			
IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具(git.sv ...
 - mysql时间戳详解及运用
			
1.在已有表cms_nrgl_st 增加时间戳,这个时间是当前时间精确到秒的 alter table cms_nrgl_st add time_stamp TIMESTAMP DEFAULT CURR ...
 - python面试的100题(9)
			
17.python如何实现单例模式?请写出两种实现方式? 第一种方法:使用装饰器 def singleton(cls): instances = {} def wrapper(*args, **kwa ...
 - telnet不起作用
			
1.出现 'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件. 原因:因为本机的Telnet客户端默认是关闭的,所以我们要手动打开 解决方案:打开控制面板–>程序–>打开 ...
 - 题解【洛谷P1407】 [国家集训队]稳定婚姻
			
题面 题解 很好的\(Tarjan\)练习题. 主要讲一下如何建图. 先用\(STL \ map\)把每个人的名字映射成数字. 输入第\(i\)对夫妻时把女性映射成\(i\),把男性映射成\(i+n\ ...
 - update_jz首项V5.0-Tutorial
			
What's New: 增加了4个对话框,用于展示信息.归并条目.剔除条目 增加了可视化统计图形中每个科室(柱形)的统计总数 可视化图形一些颜色调整(无奈在省份很多的条件下一些颜色还不易区分) 下面是 ...
 - ffmpeg 音频常用命令
			
ffmpeg的使用方式: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Stream ...