1. 导入相关包:Spring包:Spring架包 MyBatis包:MyBatis架包 整合包:Mybatis-Spring整合包

  2. 编写实体类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>
  3. 创建实体类的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容器来处理和实例化,不再需要另外编写。此时的项目结构如图:

  4. 在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>
  5. 编写测试主方法,如:

    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());
    }
    }
  6. 配置声明式事务,为了使用事务,先修改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的更多相关文章

  1. springMVC+mybatis+spring整合案例

    1.web.xml a:配置spring监听,使web容器在启动时加载spring的applicationContext.xml <listener> <listener-class ...

  2. springMVC+MyBatis+Spring 整合(3)

    spring mvc 与mybatis 的整合. 加入配置文件: spring-mybaits.xml <?xml version="1.0" encoding=" ...

  3. SpringMVC+Mybatis+Spring整合

    Maven引入需要的JAR包 pom.xml <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEA ...

  4. MyBatis Spring整合配置映射接口类与映射xml文件

    本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...

  5. Mybatis——Spring整合

    一.引入依赖 Spring的相关jar包 mybatis-3.4.1.jar mybatis-spring-1.3.0.jar mysql-connector-java-5.1.37-bin.jar ...

  6. springMVC+MyBatis+Spring 整合(4) ---解决Spring MVC 对AOP不起作用的问题

    解决Spring MVC 对AOP不起作用的问题 分类: SpringMVC3x+Spring3x+MyBatis3x myibaits spring J2EE2013-11-21 11:22 640 ...

  7. Mybatis+Spring整合后Mapper测试类编写

    public class UserMapperTest { private ApplicationContext applicationContext; @Before public void ini ...

  8. springmvc+mybatis+spring 整合源码项目

    A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等 ...

  9. springmvc+mybatis+spring 整合

    获取[下载地址]   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] ...

  10. springmvc+mybatis+spring 整合 bootstrap

    获取[下载地址]   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] ...

随机推荐

  1. BFS-八数码问题与状态图搜索

    在一个3*3的棋盘上放置编号为1~8的八个方块,每个占一格,另外还有一个空格.与空格相邻的数字方块可以移动到空格里.任务1:指定的初始棋局和目标棋局,计算出最少的移动步数:任务2:数出数码的移动序列. ...

  2. 颜色color转为rgb格式

    function convertHexToRGB(color) {       if (color.length === 4) {             let extendedColor = &q ...

  3. restful设计参考

    https://www.cnblogs.com/pyspark/p/8599210.html 以下查阅多处文档,思考总结: 所谓restful规范代表一种理想状态,首先对此种规范表示赞同,但应不忘实事 ...

  4. Codeforces Round #611 (Div. 3) A-F简要题解

    contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...

  5. .NET知识梳理——3.面向对象

    1. 面向对象 1.1        封装.继承.多态理解 1.1.1  封装 封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“ ...

  6. js -- 操作sqlite数据库

    最近看到一个使用js来操作sqlite数据库的,测试了一下,具体使用的是 js操作类: https://github.com/kripken/sql.js/(sqlite js 驱动) 异步请求:ht ...

  7. MySql -- default 默认约束

    常用数据库约束: 一.default 默认约束: 二.not null:非空约束,指定某列不为NULL: 三.unique:唯一约束,指定某列和几列组合的数据不能重复: 四.primary key:主 ...

  8. IDEA与Tomcat相关配置

    idea会为每一个Tomcat部署的项目,独立建一份配置文件. 配置文件所在位置 怎么部署的(查看虚拟目录)使用的第三种部署方式 部署项目存放的路径 项目目录和Tomcat部署目录 Tomcat真正访 ...

  9. js对象的深拷贝及其的几种方法

    深拷贝和浅拷贝是javascript中一个比较复杂的问题,也是面试官最喜欢问的问题之一,通过这个为可以看出是否入门,深拷贝和浅拷贝也是初学者经常犯错一个点. 简单来说深拷贝是拷贝储存在栈中的对象,而浅 ...

  10. XML学习笔记1

    一.XML与HTML的差异 XML 不是 HTML 的替代:XML 和 HTML 为不同的目的而设计: XML 被设计用来传输和存储数据,其焦点是数据的内容: HTML 被设计用来显示数据,其焦点是数 ...