Unit08: Spring集成mybatis    

1. 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,并且,将
该注解添加到需要扫描的映射器上面。

注入annotationClass属性值。

代码:

src/main/java

annotations

  1. package annotations;
  2.  
  3. public @interface MyBatisRepository {
  4.  
  5. }

MyBatisRepository.java

dao

  1. package dao;
  2.  
  3. import java.util.List;
  4. import java.util.Map;
  5.  
  6. import org.springframework.stereotype.Repository;
  7.  
  8. import annotations.MyBatisRepository;
  9. import entity.Employee;
  10. import entity.Employee2;
  11.  
  12. /**
  13. * Mapper映射器
  14. *
  15. */
  16. @Repository("empDAO")
  17. @MyBatisRepository
  18. public interface EmployeeDAO {
  19. public void save(Employee e);
  20. public List<Employee> findAll();
  21. public Employee findById(int id);
  22. public void modify(Employee e);
  23. public void delete(int id);
  24. public Map findById2(int id);
  25. public Employee2 findById3(int id);
  26. }

EmployeeDAO.java

entity

  1. package entity;
  2.  
  3. public class Employee {
  4. private Integer id;
  5. private String name;
  6. private Integer age;
  7.  
  8. @Override
  9. public String toString() {
  10. return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]";
  11. }
  12. public Integer getId() {
  13. return id;
  14. }
  15. public void setId(Integer id) {
  16. this.id = id;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public Integer getAge() {
  25. return age;
  26. }
  27. public void setAge(Integer age) {
  28. this.age = age;
  29. }
  30.  
  31. }

Employee.java

  1. package entity;
  2.  
  3. public class Employee2 {
  4. private Integer empNo;
  5. private String ename;
  6. private Integer age;
  7.  
  8. @Override
  9. public String toString() {
  10. return "Employee2 [empNo=" + empNo + ", ename=" + ename + ", age=" + age + "]";
  11. }
  12.  
  13. public void setEmpNo(Integer empNo) {
  14. this.empNo = empNo;
  15. }
  16. public void setEname(String ename) {
  17. this.ename = ename;
  18. }
  19. public void setAge(Integer age) {
  20. this.age = age;
  21. }
  22.  
  23. }

Employee2.java

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
  3. "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
  4.  
  5. <mapper namespace="dao.EmployeeDAO">
  6. <!--
  7. id:要求唯一
  8. parameterType:参数类型,要写类的完整的名称。
  9. -->
  10. <insert id="save"
  11. parameterType="entity.Employee">
  12. INSERT INTO emp_czh
  13. VALUES(emp_czh_seq.nextval,#{name},#{age})
  14. </insert>
  15.  
  16. <!--
  17. resultType:返回类型,要写类的完整的名称。
  18. -->
  19. <select id="findAll"
  20. resultType="entity.Employee">
  21. SELECT * FROM emp_czh
  22. </select>
  23.  
  24. <select id="findById"
  25. parameterType="int"
  26. resultType="entity.Employee">
  27. SELECT * FROM emp_czh
  28. WHERE id = #{id1}
  29. </select>
  30.  
  31. <update id="modify"
  32. parameterType="entity.Employee">
  33. UPDATE emp_czh SET name = #{name},
  34. age = #{age} WHERE id = #{id}
  35. </update>
  36.  
  37. <delete id="delete" parameterType="int">
  38. DELETE FROM emp_czh WHERE id = #{id1}
  39. </delete>
  40.  
  41. <!-- 返回Map类型的结果 -->
  42. <!--
  43. map是java.util.Map的简写形式
  44. -->
  45. <select id="findById2" parameterType="int"
  46. resultType="map">
  47. SELECT * FROM emp_czh WHERE id = #{id1}
  48. </select>
  49.  
  50. <!--
  51. resultMap告诉mybatis表的字段名
  52. 与实体类的属性名的对应关系。
  53. (如果表的字段名与属性名相同,则不用写了)
  54. -->
  55. <resultMap type="entity.Employee2"
  56. id="empResultMap">
  57. <result property="empNo" column="id"/>
  58. <result property="ename" column="name"/>
  59. </resultMap>
  60.  
  61. <select id="findById3" parameterType="int"
  62. resultMap="empResultMap">
  63. SELECT * FROM emp_czh WHERE id = #{id1}
  64. </select>
  65. </mapper>

EmpMapper.xml

src/mian/resources

  1. # db connection parameters
  2. # key=value
  3. driver=oracle.jdbc.driver.OracleDriver
  4. url=jdbc:oracle:thin:@192.168.201.227:1521:orcl
  5. user=openlab
  6. pwd=open123
  7. # datasource parameters
  8. initSize=1
  9. maxSize=1

db.properties

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  6. xmlns:jee="http://www.springframework.org/schema/jee"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xmlns:aop="http://www.springframework.org/schema/aop"
  9. xmlns:mvc="http://www.springframework.org/schema/mvc"
  10. xmlns:util="http://www.springframework.org/schema/util"
  11. xmlns:jpa="http://www.springframework.org/schema/data/jpa"
  12. xsi:schemaLocation="
  13. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  14. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
  15. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
  16. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
  17. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
  18. http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
  19. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  20. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  21. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
  22. <!-- 读取db.properties文件 -->
  23. <util:properties id="db"
  24. location="classpath:db.properties"/>
  25. <!-- 配置连接池 -->
  26. <bean id="ds"
  27. class="org.apache.commons.dbcp.BasicDataSource"
  28. destroy-method="close">
  29. <property name="driverClassName"
  30. value="#{db.driver}" />
  31. <property name="url"
  32. value="#{db.url}" />
  33. <property name="username"
  34. value="#{db.user}" />
  35. <property name="password"
  36. value="#{db.pwd}" />
  37. </bean>
  38. <!-- 配置SqlSessionFactoryBean -->
  39. <bean id="ssfb"
  40. class="org.mybatis.spring.SqlSessionFactoryBean">
  41. <!-- 注入连接池 -->
  42. <property name="dataSource" ref="ds"/>
  43. <!-- 注入映射文件的位置信息 -->
  44. <property name="mapperLocations"
  45. value="classpath:entity/*.xml"/>
  46. </bean>
  47. <!-- 配置MapperScannerConfigurer -->
  48. <bean
  49. class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  50. <!-- 注入要扫描的包名 -->
  51. <property name="basePackage"
  52. value="dao"/>
  53. <!-- 只扫描带有该注解的映射器 -->
  54. <property name="annotationClass"
  55. value="annotations.MyBatisRepository"/>
  56. </bean>
  57. </beans>

spring-mybatis.xml

src/test/java

test

  1. package test;
  2.  
  3. import java.util.List;
  4.  
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. import org.springframework.context.ApplicationContext;
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;
  9.  
  10. import dao.EmployeeDAO;
  11. import entity.Employee;
  12.  
  13. public class TestCase {
  14. private EmployeeDAO dao;
  15. @Before
  16. public void init(){
  17. ApplicationContext ac =
  18. new ClassPathXmlApplicationContext(
  19. "spring-mybatis.xml");
  20. dao = ac.getBean("empDAO",
  21. EmployeeDAO.class);
  22. }
  23. @Test
  24. public void test1(){
  25. List<Employee> emps =
  26. dao.findAll();
  27. System.out.println(emps);
  28. }
  29. @Test
  30. public void test2(){
  31. Employee e = new Employee();
  32. e.setName("Rod Johnson");
  33. e.setAge(40);
  34. dao.save(e);
  35. }
  36. }

TestCase.java

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-webmvc</artifactId>
  5. <version>3.2.8.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.mybatis</groupId>
  9. <artifactId>mybatis</artifactId>
  10. <version>3.2.8</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.mybatis</groupId>
  14. <artifactId>mybatis-spring</artifactId>
  15. <version>1.2.2</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-jdbc</artifactId>
  20. <version>3.2.8.RELEASE</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>com.oracle</groupId>
  24. <artifactId>ojdbc14</artifactId>
  25. <version>10.2.0.4.0</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>commons-dbcp</groupId>
  29. <artifactId>commons-dbcp</artifactId>
  30. <version>1.4</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>junit</groupId>
  34. <artifactId>junit</artifactId>
  35. <version>4.12</version>
  36. </dependency>
  37. </dependencies>

pom.xml

(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。

代码:

src/main/java

annotations

  1. package annotations;
  2.  
  3. public @interface MyBatisRepository {
  4.  
  5. }

MyBatisRepository.java

dao

  1. package dao;
  2.  
  3. import java.util.List;
  4. import java.util.Map;
  5.  
  6. import org.springframework.stereotype.Repository;
  7.  
  8. import annotations.MyBatisRepository;
  9. import entity.Employee;
  10. import entity.Employee2;
  11.  
  12. /**
  13. * Mapper映射器
  14. *
  15. */
  16. public interface EmployeeDAO {
  17. public void save(Employee e);
  18. public List<Employee> findAll();
  19. public Employee findById(int id);
  20. public void modify(Employee e);
  21. public void delete(int id);
  22. public Map findById2(int id);
  23. public Employee2 findById3(int id);
  24. }

EmployeeDAO.java

  1. package dao;
  2.  
  3. import java.util.List;
  4. import java.util.Map;
  5.  
  6. import javax.annotation.Resource;
  7.  
  8. import org.mybatis.spring.SqlSessionTemplate;
  9. import org.springframework.stereotype.Repository;
  10.  
  11. import entity.Employee;
  12. import entity.Employee2;
  13.  
  14. @Repository("empDAO")
  15. public class EmployeeDAOMybatisImpl implements
  16. EmployeeDAO{
  17.  
  18. @Resource(name="sst")
  19. private SqlSessionTemplate sst;
  20.  
  21. public void save(Employee e) {
  22. sst.insert("dao.EmployeeDAO.save",
  23. e);
  24. }
  25.  
  26. public List<Employee> findAll() {
  27. return sst.selectList(
  28. "dao.EmployeeDAO.findAll");
  29. }
  30.  
  31. public Employee findById(int id) {
  32. return sst.selectOne(
  33. "dao.EmployeeDAO.findById", id);
  34. }
  35.  
  36. public void modify(Employee e) {
  37. sst.update("dao.EmployeeDAO.modify",
  38. e);
  39. }
  40.  
  41. public void delete(int id) {
  42. sst.delete("dao.EmployeeDAO.delete",
  43. id);
  44. }
  45.  
  46. public Map findById2(int id) {
  47. return sst.selectOne(
  48. "dao.EmployeeDAO.findById2", id);
  49. }
  50.  
  51. public Employee2 findById3(int id) {
  52. return sst.selectOne(
  53. "dao.EmployeeDAO.findById3", id);
  54. }
  55.  
  56. }

EmployeeDAOMybatisImpl.java

entity

  1. package entity;
  2.  
  3. public class Employee {
  4. private Integer id;
  5. private String name;
  6. private Integer age;
  7.  
  8. @Override
  9. public String toString() {
  10. return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]";
  11. }
  12. public Integer getId() {
  13. return id;
  14. }
  15. public void setId(Integer id) {
  16. this.id = id;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public Integer getAge() {
  25. return age;
  26. }
  27. public void setAge(Integer age) {
  28. this.age = age;
  29. }
  30.  
  31. }

Employee.java

  1. package entity;
  2.  
  3. public class Employee2 {
  4. private Integer empNo;
  5. private String ename;
  6. private Integer age;
  7.  
  8. @Override
  9. public String toString() {
  10. return "Employee2 [empNo=" + empNo + ", ename=" + ename + ", age=" + age + "]";
  11. }
  12.  
  13. public void setEmpNo(Integer empNo) {
  14. this.empNo = empNo;
  15. }
  16. public void setEname(String ename) {
  17. this.ename = ename;
  18. }
  19. public void setAge(Integer age) {
  20. this.age = age;
  21. }
  22.  
  23. }

Employee2.java

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
  3. "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
  4.  
  5. <mapper namespace="dao.EmployeeDAO">
  6. <!--
  7. id:要求唯一
  8. parameterType:参数类型,要写类的完整的名称。
  9. -->
  10. <insert id="save"
  11. parameterType="entity.Employee">
  12. INSERT INTO emp_czh
  13. VALUES(emp_czh_seq.nextval,#{name},#{age})
  14. </insert>
  15.  
  16. <!--
  17. resultType:返回类型,要写类的完整的名称。
  18. -->
  19. <select id="findAll"
  20. resultType="entity.Employee">
  21. SELECT * FROM emp_czh
  22. </select>
  23.  
  24. <select id="findById"
  25. parameterType="int"
  26. resultType="entity.Employee">
  27. SELECT * FROM emp_czh
  28. WHERE id = #{id1}
  29. </select>
  30.  
  31. <update id="modify"
  32. parameterType="entity.Employee">
  33. UPDATE emp_czh SET name = #{name},
  34. age = #{age} WHERE id = #{id}
  35. </update>
  36.  
  37. <delete id="delete" parameterType="int">
  38. DELETE FROM emp_czh WHERE id = #{id1}
  39. </delete>
  40.  
  41. <!-- 返回Map类型的结果 -->
  42. <!--
  43. map是java.util.Map的简写形式
  44. -->
  45. <select id="findById2" parameterType="int"
  46. resultType="map">
  47. SELECT * FROM emp_czh WHERE id = #{id1}
  48. </select>
  49.  
  50. <!--
  51. resultMap告诉mybatis表的字段名
  52. 与实体类的属性名的对应关系。
  53. (如果表的字段名与属性名相同,则不用写了)
  54. -->
  55. <resultMap type="entity.Employee2"
  56. id="empResultMap">
  57. <result property="empNo" column="id"/>
  58. <result property="ename" column="name"/>
  59. </resultMap>
  60.  
  61. <select id="findById3" parameterType="int"
  62. resultMap="empResultMap">
  63. SELECT * FROM emp_czh WHERE id = #{id1}
  64. </select>
  65. </mapper>

EmpMapper.xml

src/main/resources

  1. # db connection parameters
  2. # key=value
  3. driver=oracle.jdbc.driver.OracleDriver
  4. url=jdbc:oracle:thin:@192.168.201.227:1521:orcl
  5. user=openlab
  6. pwd=open123
  7. # datasource parameters
  8. initSize=1
  9. maxSize=1

db.properties

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  6. xmlns:jee="http://www.springframework.org/schema/jee"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xmlns:aop="http://www.springframework.org/schema/aop"
  9. xmlns:mvc="http://www.springframework.org/schema/mvc"
  10. xmlns:util="http://www.springframework.org/schema/util"
  11. xmlns:jpa="http://www.springframework.org/schema/data/jpa"
  12. xsi:schemaLocation="
  13. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  14. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
  15. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
  16. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
  17. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
  18. http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
  19. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  20. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  21. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
  22. <!-- 读取db.properties文件 -->
  23. <util:properties id="db"
  24. location="classpath:db.properties"/>
  25. <!-- 配置连接池 -->
  26. <bean id="ds"
  27. class="org.apache.commons.dbcp.BasicDataSource"
  28. destroy-method="close">
  29. <property name="driverClassName"
  30. value="#{db.driver}" />
  31. <property name="url"
  32. value="#{db.url}" />
  33. <property name="username"
  34. value="#{db.user}" />
  35. <property name="password"
  36. value="#{db.pwd}" />
  37. </bean>
  38. <!-- 配置SqlSessionFactoryBean -->
  39. <bean id="ssfb"
  40. class="org.mybatis.spring.SqlSessionFactoryBean">
  41. <!-- 注入连接池 -->
  42. <property name="dataSource" ref="ds"/>
  43. <!-- 注入映射文件的位置信息 -->
  44. <property name="mapperLocations"
  45. value="classpath:entity/*.xml"/>
  46. </bean>
  47. <!-- 配置SqlSessionTemplate -->
  48. <bean id="sst"
  49. class="org.mybatis.spring.SqlSessionTemplate">
  50. <!-- 注入SqlSessionFactoryBean -->
  51. <constructor-arg index="0"
  52. ref="ssfb"/>
  53. </bean>
  54. <!-- 配置组件扫描 -->
  55. <context:component-scan
  56. base-package="dao"/>
  57. </beans>

spring-mybatis.xml

src/test/java

test

  1. package test;
  2.  
  3. import java.util.List;
  4.  
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. import org.springframework.context.ApplicationContext;
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;
  9.  
  10. import dao.EmployeeDAO;
  11. import entity.Employee;
  12.  
  13. public class TestCase {
  14. private EmployeeDAO dao;
  15. @Before
  16. public void init(){
  17. ApplicationContext ac =
  18. new ClassPathXmlApplicationContext(
  19. "spring-mybatis.xml");
  20. dao = ac.getBean("empDAO",
  21. EmployeeDAO.class);
  22. }
  23. @Test
  24. public void test1(){
  25. List<Employee> emps =
  26. dao.findAll();
  27. System.out.println(emps);
  28. }
  29.  
  30. @Test
  31. public void test2(){
  32. Employee e = new Employee();
  33. e.setName("Hello Kitty");
  34. e.setAge(40);
  35. dao.save(e);
  36. }
  37. }

TestCase.java

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-webmvc</artifactId>
  5. <version>3.2.8.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.mybatis</groupId>
  9. <artifactId>mybatis</artifactId>
  10. <version>3.2.8</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.mybatis</groupId>
  14. <artifactId>mybatis-spring</artifactId>
  15. <version>1.2.2</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-jdbc</artifactId>
  20. <version>3.2.8.RELEASE</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>com.oracle</groupId>
  24. <artifactId>ojdbc14</artifactId>
  25. <version>10.2.0.4.0</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>commons-dbcp</groupId>
  29. <artifactId>commons-dbcp</artifactId>
  30. <version>1.4</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>junit</groupId>
  34. <artifactId>junit</artifactId>
  35. <version>4.12</version>
  36. </dependency>
  37. <dependency>
  38. <groupId>javax.annotation</groupId>
  39. <artifactId>javax.annotation-api</artifactId>
  40. <version>1.2</version>
  41. </dependency>
  42. </dependencies>

pom.xml

Unit08: Spring集成mybatis的更多相关文章

  1. Spring集成MyBatis框架

    Java在写数据库查询时,我接触过四种方式: 1.纯Java代码,引用对应的数据库驱动包,自己写连接与释放逻辑(可以用连接池) 这种模式实际上性能是非常不错的,但是使用起来并不是非常方便:一是要手工为 ...

  2. SSM框架开发web项目系列(五) Spring集成MyBatis

    前言 在前面的MyBatis部分内容中,我们已经可以独立的基于MyBatis构建一个数据库访问层应用,但是在实际的项目开发中,我们的程序不会这么简单,层次也更加复杂,除了这里说到的持久层,还有业务逻辑 ...

  3. Spring集成MyBatis的使用-使用SqlSessionTemplate

    Spring集成MyBatis的使用 Spring集成MyBatis,早期是使用SqlSessionTemplate,当时并没有用Mapper映射器,既然是早期,当然跟使用Mapper映射器是存在一些 ...

  4. Spring集成MyBatis的使用-使用Mapper映射器

    Spring集成MyBatis使用 前面复习MyBatis时,发现在测试时,需要手动创建sqlSessionFactory,Spring将帮忙自动创建sqlSessionFactory,并且将自动扫描 ...

  5. Spring集成Mybatis,spring4.x整合Mybatis3.x

    Spring集成Mybatis,spring4.x整合Mybatis3.x ============================== 蕃薯耀 2018年3月14日 http://www.cnblo ...

  6. spring集成mybatis配置多个数据源,通过aop自动切换

    spring集成mybatis,配置多个数据源并自动切换. spring-mybatis.xml如下: <?xml version="1.0" encoding=" ...

  7. MyBatis从入门到精通(第9章):Spring集成MyBatis(下)

    MyBatis从入门到精通(第9章):Spring集成MyBatis(下) springmvc执行流程原理 mybatis-spring  可以帮助我们将MyBatis代码无缝整合到Spring中.使 ...

  8. MyBatis从入门到精通(第9章):Spring集成MyBatis(中)

    MyBatis从入门到精通(第9章):Spring集成MyBatis(中) 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.应该将应用自身的设计和具体 ...

  9. MyBatis从入门到精通(第9章):Spring集成MyBatis(上)

    MyBatis从入门到精通(第9章):Spring集成MyBatis(上) Spring是一个为了解决企业级Web应用开发过程中面临的复杂性,而被创建的一个非常流行的轻量级框架. mybatis-sp ...

随机推荐

  1. 【Python】日期模块总结

    Time Tuple: 索引 字段 值 0 年(四位数字) 2015 1 月份 1 - 12 2 日期 1 - 31 3 小时 0 - 23 4 分钟 0 - 59 5 秒 0 - 61 (60 或 ...

  2. Highcharts 树状图(Treemap)

    Highcharts 树状图(Treemap) 树状图 series 配置 设置 series 的 type 属性为 treemap ,series.type 描述了数据列类型.默认值为 " ...

  3. 探究JS中的连等赋值问题

    一.引子 最近在看别人的博客时无意中看到一个这样的问题 var a = {n: 1}; var b = a; a.x = a = {n:2}; console.log(a.x); //undefine ...

  4. 在QT中使用静态对象

    最近做教研室的项目,需要只能存在一个接收数据的线程,那么我就想把这个线程设置成一个静态对象.但是在connect信号与槽的时候出了一点问题,最后搞好了,现在这mark一下: 比如说一个声明了一个静态的 ...

  5. Datastage8.5导入导出DS作业例子

    以下为Datastage8.5的命令行方式的导入和导出,直接登陆服务器执行如下命令即可.不是Datastage客户端的导入和导出,使用命令行方式的好处是:可以将该命令使用shell脚本进行调用导入和导 ...

  6. json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?

     后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢? 开发中处理处理价格金额问题, 后台经常返回float.double类型, 打印或转成NSS ...

  7. CUDA库函数使用笔记与案例(一)

    项目合作中需要整合对方公司提供的CUDA代码,因此需要详细学习代码中涉及的cuda函数. CUDA Tool Kit 8.0较完整的官方说明文档: http://docs.nvidia.com/cud ...

  8. GPU编程自学5 —— 线程协作

    深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...

  9. iOS开发CocoaPods使用

    一.为什么用CocoaPods iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三 ...

  10. HttpUrlConnection使用Get和Post访问服务器的工具类(一)

    首先我们有一个返回响应的接口HttpCallBackListener public interface HttpCallbackListener { void onFinish(String resp ...