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 更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] ... 
随机推荐
- Docker学习(六)Dockerfile构建自定义镜像
			Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ... 
- c++  踩坑大法好  char字符,char数组,char*
			1,基本语法 1,定义一个char字符: char hehe='a'; //单引号 2,定义一个由char字符组成的数组: char daqing[] = "abcd"; char ... 
- SpringBoot 测试基类
			每次写单元测试都要重复写一些方法.注解等,这里我写了一下测试的基类 (1) 记录测试方法运行的时间 (2)两个父类方法 print,可打印list和object对象 (3)一个属性 logger 记录 ... 
- 0005 修改Django工程名
			写框架非常耗时间,把框架写好以后,经测试稳定的框架,需要保存下来,以后有工程需要,直接更改工程名即可. 01 右键点击工程名,点击Refactor/Rename 02 选择更改工程名 03 关闭PyC ... 
- python2下解决json的unicode编码问题
			基础知识: 序列化——json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为json字符串) 反序列化—— ... 
- pve apt-get update error 升级报错-文章未完工和验证
			pve: apt-get update error 升级报错 提示如下报错 Hit: http://security.debian.org buster/updates InRelease Hit: ... 
- xshell如何将Windows文件上传到linux
			1. 首先先将你xshell配置好用户名及密码等,必须使用有权限下载的账号进行操作. 使用 yum provides */rz 这条命令,查看你系统自带的软件包的信息. 2.在输出的信息中可 ... 
- Rider代码格式设置
			单选注释格式设置: File/Settings(Ctrl+Alt+S/Command+Option+S)/Code Style/C#选择Other 
- C语言随笔1:内存分配方式与动静态变量
			首先几个基本概念(网上的各种说法都很乱:个人理解整理了一下 内存分类方法很多,动态.静态: 五区: 三段: 内存的区: 1.动态存储区分为 栈区.堆区 也统称为堆栈段1.1栈区(.stack) ... 
- python之路异常
			一.基本异常处理 1.基本异常处理 inp=input("请输入内容.:") try: num=int(inp) print(num) except Exception as e: ... 
