spring整合mybatis
2017-06-22 18:54
260 查看
Spring集成mybatis
(1)方式一
step1. 导包。spring-webmvc,mybatis,mybatis-spring, ojdbc,dbcp,spring-jdbc,junit。
step2. 添加spring的配置文件。
注:集成之后,不再需要mybatis的配置文件了,之前的配置信息 用一个bean(SqlSessionFactoryBean)来代替。
step3.实体类。
step4.映射文件。
step5.Mapper映射器。
step6.配置MapperScannerConfigurer。
注:该bean负责调用SqlSession的getMapper方法,获得 符合Mapper映射器要求的对象。并且会将这些对象放到spring 容器里面(默认的id是首字母小写之后的接口名,比如Mapper 映射器名为EmpDAO,则默认的id是empDAO,也可以使用@Repository 来修改默认的id)。
注:如果只扫描特定的映射器,可以做如下两步。
step1.开发一个注解,比如@MyBatisRepository,并且,将 该注解添加到需要扫描的映射器上面。
step2.给MapperScannerConfigurer注入annotationClass属性值。
(2)方式二
step1. 导包。spring-webmvc,mybatis,mybatis-spring, ojdbc,dbcp,spring-jdbc,junit。
step2. 添加spring的配置文件。
注:集成之后,不再需要mybatis的配置文件了,之前的配置信息 用一个bean(SqlSessionFactoryBean)来代替。
step3.实体类。
step4.映射文件。
step5.Mapper映射器。
step6.写映射器的实现类。
注:可以将SqlSessionTemplate注入到实现类中,然后调用 SqlSessionTemplate的方法即可。
step7.配置SqlSessionTemplate。
方法一的代码如下:
实体类:
package entity; public class Dept { private Integer id; private String name; private String loc; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } @Override public String toString() { return "Dept [id=" + id + ", name=" + name + ", loc=" + loc + "]"; } }
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:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> <!-- db.properties --> <util:properties id="config" location="classpath:db.properties" /> <!-- 连接池 --> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="#{config.driver}"/> <property name="url" value="#{config.url}"/> <property name="username" value="#{config.username}"></property> <property name="password" value="#{config.password}"></property> </bean> <!-- spring集成mybatis不需要mybatis配置文件,配置SqlSessionFactoryBean --> <bean id="ssfb" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入连接池 --> <!-- 不再使用mybatis自带的连接池,而是使用spring管理的连接池 --> <property name="dataSource" ref="ds" /> <!-- 映射文件的位置 --> <property name="mapperLocations" value="classpath:entity/*.xml"/> </bean> <!-- 配置MapperScannerConfigurer --> <!-- 获得符合Mapper映射器要求的对象(相当于调用SqlSession的getMapper()方法)。 并且会将这些对象放到spring容器里面(默认的id是首字母小写之后的接口名 比如Mapper映射器名为EmpDAO,则默认的id是empDAO,也可以使用@Repository来修改默认的id --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 扫描该包及其子包下的所有映射器 --> <property name="basePackage" value="dao"/> </bean> <!-- 注意:此配置文件没有配置组件扫描,因为MapperScannerConfigurer 会自动调用组件扫描 --> </beans>
映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <!-- 命名空间为一个字符串,加以区分xml中各个元素 --> <mapper namespace="dao.DeptDAO"> <!-- 插入一条数据 --> <insert id="save" parameterType="entity.Dept" > INSERT INTO de (id,deptName,loc) VALUES (de_seq.nextval,#{name},#{loc}) </insert> <resultMap type="entity.Dept" id="deptmap"> <result property="name" column="deptName"/> </resultMap> <!-- 查询所有记录 --> <select id="findAll" resultMap="deptmap"> SELECT id,deptName,loc FROM de ORDER BY id </select> <!-- 根据id查询一条记录 --> <select id="findById" resultMap="deptmap" parameterType="int"> SELECT id,deptName,loc FROM de WHERE id = #{id1} </select> <!-- 修改一条记录 --> <update id="modify" parameterType="entity.Dept"> UPDATE de SET deptName = #{name},loc = #{loc} WHERE id = #{id} </update> <!-- 删除一条记录 --> <delete id="delete" parameterType="int"> DELETE FROM de WHERE id = #{i d608 d2} </delete> </mapper>
映射器:
package dao; import java.util.List; import entity.Dept; public interface DeptDAO { public void save(Dept dept);//插入一条数据 public List<Dept> findAll();//查询所有记录 public Dept findById(int id);//根据id查询一条记录 public void modify(Dept dept);//修改一条记录 public void delete(int id);//删除一条记录 }
测试代码:
package test; import java.util.List; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import dao.DeptDAO; import entity.Dept; public class TestCase1 { private DeptDAO dao; @Before public void init(){ ApplicationContext ac = new ClassPathXmlApplicationContext("springmvc.xml"); dao = ac.getBean("deptDAO",DeptDAO.class); } @Test //插入一条数据 public void test1(){ Dept dept = new Dept(); dept.setName("管理部"); dept.setLoc("大连"); dao.save(dept); } @Test //查询所有记录 public void test2(){ List<Dept> list = dao.findAll(); for(Dept dept : list) System.out.println(dept); } @Test //根据id查询一条记录 public void test3(){ Dept dept = dao.findById(21); System.out.println(dept); } @Test //修改一条记录 public void test4(){ Dept dept = dao.findById(21); dept.setName("保洁部"); dept.setLoc("大堂"); dao.modify(dept); } @Test //删除一条记录 public void test5(){ dao.delete(3); } }
相关文章推荐
- spring整合 mybatis 事务管理不生效原因
- spring整合mybatis
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Spring+SpringMVC+Mybatis+mysql整合详解
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建
- Mybatis学习笔记(十八)【spring和mybatis整合】
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例
- springmvc+mybatis+spring 整合 bootstrap html5 mysql oracle
- Spring+SpringMVC+Mybatis整合
- Spring整合Mybatis解决 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
- springboot学习(6)springboot整合Mybatis例子
- 关于spring+springMVC+myBatis的一些基础配置以及整合
- spring-boot | 使员Druid 整合Mybatis 最简配置多数据源
- 【MyBatis学习14】MyBatis和Spring整合
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- spring 整合 mybatis 详细配置
- Spring+SpringMVC+Mybatis+Mysql整合实例
- mybatis 详解(十一)------ mybatis和spring整合
- mybatis与spring整合(基于配置文件)