Spring集成MyBatis

使用MyBatis,需要创建MyBatis框架中的某些对象,使用这些对象,就能使用mybatis提供的功能了。

  1. 需要有Dao接口的代理对象,例如StudentDao接口,需要一个他的代理对象,使用SqlSession.getMapper(StudentDao.class),得到dao代理对象。
  2. 需要由SqlSessionFactory,创建SqlSessionFactory才能使用openSession得到SqlSession对象。
  3. 在处理大型项目的时候,MyBatis提供的数据源(PooledDataSource)难以满足项目需求,通常会更换一个连接池对象。
Spring容器 (面对Spring开发,从Spring中获得对象)
DataSource对象,数据源
SqlSessionFactory对象
dao接口的代理对象1~n
注:以上对象都由Spring使用IOC创建好对象。

实现步骤:

  1. 使用msyql数据库,使用学生表student(id int 主键列 自动增长,

    ​ name varchar(80) ,

    ​ age int )。

  2. 创建maven项目

  3. 加入依赖:spring依赖,mybatis依赖,mysql驱动,junit依赖,mybatis-spring依赖(mybatis网站上提供的,用来在spring项目中创建mybatis对象),spring事务相关的依赖。

  4. 创建实体类Student

  5. 创建Dao接口和Mapper文件写SQL语句

  6. 写mybatis主配置文件

  7. 创建service接口其实现类

  8. 创建spring的配置文件

    • 声明数据源DataSource,使用阿里的Druid连接池
    • 声明SqlSessionFactoryBeanlei,在这个类内部创建的是SqlSessionFactory对象
    • 声明MapperScannerConfiguration类,在内部创建dao代理对象,创建的对象都放在spring容器中。
    • 声明service对象,将上一步中的dao赋值给service属性,让其进行业务层的操作
  9. 测试dao访问数据库

操作

  1. 自己建表,三个属性(id(主键),name,age)

  2. 创建maven项目(IDEA)

  3. 具体依赖:

    • junit (单元测试)

    • spring-context (spring依赖)

    • spring-tx ,spring-jdbc(spring事务的依赖)

    • mybatis(mybatis依赖)

    • mybatis-spring(mybatis和spring集成的依赖)

    • mysql-connector-java(msyql驱动)

    • druid(阿里连接池)

      1. <!-- resource插件 -->
      2. <build>
      3. <resources>
      4. <resource>
      5. <directory>src/main/java</directory>
      6. <includes>
      7. <include>**/*.properties</include>
      8. <include>**/*.xml</include>
      9. </includes>
      10. <filtering>false</filtering>
      11. </resource>
      12. </resources>
      13. </build>
  4. 创建实体类

    1. public class Student {
    2. private Integer id;
    3. private String name;
    4. private Integer age;
    5. public Integer getId() {
    6. return id;
    7. }
    8. @Override
    9. public String toString() {
    10. return "Student{" +
    11. "id=" + id +
    12. ", name='" + name + '\'' +
    13. ", age=" + age +
    14. '}';
    15. }
    16. public void setId(Integer id) {
    17. this.id = id;
    18. }
    19. public String getName() {
    20. return name;
    21. }
    22. public void setName(String name) {
    23. this.name = name;
    24. }
    25. public Integer getAge() {
    26. return age;
    27. }
    28. public void setAge(Integer age) {
    29. this.age = age;
    30. }
    31. }
  5. 创建Dao接口和mapper文件

    1. public interface StudentDao {
    2. int insertStudent(Student student);
    3. List<Student> selectStudents();
    4. }
    1. <!-- -->
    2. <?xml version="1.0" encoding="UTF-8" ?>
    3. <!DOCTYPE mapper
    4. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    5. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    6. <!--定义为当前的命名空间-->
    7. <mapper namespace="com.wang.dao.StudentDao">
    8. <insert id="insertStudent">
    9. insert into student(name,age) values(#{name},#{age})
    10. </insert>
    11. <select id="selectStudents" resultType="com.wang.domain.Student">
    12. select id,name,age from student
    13. </select>
    14. </mapper>
  6. 写MyBatis主配置文件


    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <typeAliases>
    7. <package name="com.wang.domain"/>
    8. </typeAliases>
    9. <!--MyBatis的SQL语句和映射配置文件,指定其他Mapper文件的位置-->
    10. <!-- 找到相应的sql语句-->
    11. <mappers>
    12. <mapper resource="com/wang/dao/StudentDao.xml"/>
    13. </mappers>
    14. </configuration>
  7. 创建service接口和实现类

    1. public interface StudentService {
    2. int addStudent(Student student);
    3. List<Student> queryStudent();
    4. }
    1. public class StudentServiceImpl implements StudentService {
    2. private StudentDao studentDao;
    3. public void setStudentDao(StudentDao studentDao){
    4. this.studentDao = studentDao;
    5. }
    6. @Override
    7. public int addStudent(Student student) {
    8. int i = studentDao.insertStudent(student);
    9. return i;
    10. }
    11. @Override
    12. public List<Student> queryStudent() {
    13. List<Student> students = studentDao.selectStudents();
    14. return students;
    15. }
    16. }
  8. 创建spring配置文件

    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. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <!-- 声明数据源-->
    6. <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    7. <property name="url" value="jdbc:mysql://localhost:3306/learnjdbc" />
    8. <property name="username" value="root" />
    9. <property name="password" value="wang" />
    10. </bean>
    11. <!-- 声明SqlSessionFactoryBean-->
    12. <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
    13. <!-- 指定数据源 -->
    14. <property name="dataSource" ref="myDataSource"/>
    15. <!-- 指定MyBatis主配置文件 -->
    16. <property name="configLocation" value="classpath:MyBatisConfig.xml" />
    17. </bean>
    18. <!-- 声明MapperScannerConfiguration
    19. SqlSession.getMapper(StudentDao.class);
    20. MapperScannerConfigurer作用是:
    21. 循环basePackage所表示的包,把保重的每一个接口都找到,调用SqlSession.getMapper()把每个
    22. dao接口都创建出dao对象,dao代理对象放在容器中。
    23. -->
    24. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    25. <!-- 指定SqlSessionFactory对象名称 -->
    26. <property name="sqlSessionFactoryBeanName" value="factory"/>
    27. <!-- 指定基本包,dao接口所在的包名 -->
    28. <property name="basePackage" value="com.wang.dao"/>
    29. </bean>
    30. <!-- 声明service-->
    31. <bean id="studentService" class="com.wang.service.impl.StudentServiceImpl">
    32. <property name="studentDao" ref="studentDao"/>
    33. </bean>
    34. </beans>

接下来就可以通过junit进行测试了。

结尾:

  • 该过程中的一部分可以使用注解的方式进行(略)
  • MyBatis通常使用配置文件的方式,spring通常使用注解的方式
  • ssm框架的整合实际上就是MyBatis和spring框架的整合
  • 接下来再添加springMvc后,在控制层调用相应的业务处理层即是service的方法就可以实现ssm框架的运行。

Spring和MyBatis框架整合的更多相关文章

  1. SSM(Spring,SpringMVC,Mybatis)框架整合项目

    快速上手SSM(Spring,SpringMVC,Mybatis)框架整合项目 环境要求: IDEA MySQL 8.0.25 Tomcat 9 Maven 3.6 数据库环境: 创建一个存放书籍数据 ...

  2. SSM(Spring+SpringMVC+MyBatis)框架整合开发流程

    回忆了 Spring.SpringMVC.MyBatis 框架整合,完善一个小demo,包括基本的增删改查功能. 开发环境 IDEA MySQL 5.7 Tomcat 9 Maven 3.2.5 需要 ...

  3. 框架整合——Spring与MyBatis框架整合

    Spring整合MyBatis 1. 整合 Spring [整合目标:在spring的配置文件中配置SqlSessionFactory以及让mybatis用上spring的声明式事务] 1). 加入 ...

  4. Spring+SpringMVC+Mybatis框架整合流程

    一:基本步骤 新建Maven项目,导入相关依赖.(推荐) ————–Mybatis配置 —————- 新建entity包,并根据数据库(表)新建相关实体类. 新建dao包,并根据业务创建必要的mapp ...

  5. SSM Spring SpringMVC Mybatis框架整合Java配置完整版

    以前用着SSH都是老师给配好的,自己直接改就可以.但是公司主流还是SSM,就自己研究了一下Java版本的配置.网上大多是基于xnl的配置,但是越往后越新的项目都开始基于JavaConfig配置了,这也 ...

  6. Spring + Spring MVC + MyBatis框架整合

    ---恢复内容开始--- 一.Maven Web项目创建 如有需要,请参考:使用maven创建web项目 二.Spring + Spring MVC + MyBatis整合 1.Maven引入需要的J ...

  7. Spring+Spring MVC+Mybatis 框架整合开发(半注解半配置文件)

    项目结构: (代码里面都有注释) 一.在pom文件中依赖jar包 因为我这里分了模块,所以有父子级的共两个pom文件 父级: <?xml version="1.0" enco ...

  8. Spring+SpringMVC+mybatis框架整合

    1.jdbc.properties 1 driverClassName=com.mysql.jdbc.Driver 2 url=jdbc\:mysql\://127.0.0.1\:3306/slsal ...

  9. spring+springMVC+mybatis框架整合——配置文件说明

    如下图 web.xml配置说明: spring配置文件说明-1: spring配置文件说明-2: spring配置助记:  扫注(base) 读配(loc) 数据源(和comb(使用c3p0数据源)) ...

随机推荐

  1. NSURL组成部分详解

    手思中有这么一段代码,初看下,让人摸不着头脑 //功能:UIWebView响应长按事件 -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithR ...

  2. ios 类别和扩展-赵小波

    类别 @interface ClassName ( CategoryName ) // method declarations @end Category在iOS开发中使用非常频繁.尤其是在为系统类进 ...

  3. Docker-Compose 容器集群的编排

    Docker-Compose 容器集群的编排 1.Docker-Compose 概述 2.Docker Compose 环境安装 Docker-Compose功能:  可以实现单机上的容器集群编排 1 ...

  4. Redis 源码简洁剖析 10 - aeEventLoop 及事件

    aeEventLoop IO 事件处理 IO 事件创建 读事件处理 写事件处理 时间事件处理 时间事件定义 时间事件创建 时间事件回调函数 时间事件的触发处理 参考链接 Redis 源码简洁剖析系列 ...

  5. 13、Linux基础--grep、sed、awk三剑客综合运用

    考试 1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 [root@localhost ~]# grep -E '^[sS]' /proc/meminfo [root@l ...

  6. CoRR 2015 | MXNet: A Flexible and Efficient Machine Learning Library for Heterogeneous Distributed Systems

    MXNet是一个支持多种编程语言的机器学习库,使用MXNet可以方便地实现机器学习算法,尤其是深度神经网络.通过嵌入在宿主语言中,它将声明式符号表达与命令式张量计算相结合.它提供自动求导以计算梯度.M ...

  7. TCP/IP详解 读书笔记:TCP:传输控制协议

    TCP的服务 TCP为应用层提供一种面向连接的.可靠的字节流服务. 一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP. TCP通过以下方式提供可靠性: 应用数据被切割为TCP认为最 ...

  8. Consul安装启动

    1.安装 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp ...

  9. Devops 开发运维高级篇之微服务代码上传和代码检查

    Devops 开发运维高级篇之微服务代码上传和代码检查 微服务持续集成(1)-项目代码上传到Gitlab 微服务持续集成(2)-从Gitlab拉取项目源码 微服务持续集成(3)-提交到SonarQub ...

  10. 深入理解Java类加载机制,再也不用死记硬背了

    谈谈"会"的三个层次 在<说透分布式事务>中,我举例里说明了会与会的差别.对一门语言的学习,这里谈谈我理解的"会"的三个层次: 第一层:了解这门语言 ...