Spring的学习____X. spring 和mybatis的整合

(本案例是idea下的maven工程)

案例一:mybatis的回顾:

整体流程的回顾:

mybatis:
1.实体类(User)----》属性名和数据库中字段名相对应
2.接口(UserMapper-----》对数据库的增删改查的业务操作的定义
3.接口的配置文件(UserMapper.xml)----》
  mappers的namespace属性要写对应的接口;
  再写UserMapper接口中增删改查的SQL语句
4.mybatis 的核心配置文件(mybatis-config.xml)--》
  日志信息
  别名
  数据库源 driver,url,username,pwd
  mapper的映射器
5.测试类:
  加载mybatis的核心配置文件
  获得sqlSessionFactory对象通过sqlSessionFactoryBuilder
  获得sqlSession通过sqlSessionFactory对象
  获得实体类对象 sqlSession.getMapper(UserMapper.class)

1.pojo实体类:User

public class User {

    private String name;
    private String pwd;
    private int id;

    public User() {
    }

    public User(String name, String pwd, int id) {
        this.name = name;
        this.pwd = pwd;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "name=‘" + name + ‘\‘‘ +
                ", pwd=‘" + pwd + ‘\‘‘ +
                ", id=" + id +
                ‘}‘;
    }
}

2.接口 UserMappe

public interface UserMapper {

    List<User> getUser();
}

3.接口的配置文件 UserMapper.xml

<?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">

<mapper namespace="com.xbf.dao.UserMapper">
    <select id="getUser" resultType="User">
        select * from user
    </select>
</mapper>

4.mybatis的核心配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <!--实体类的别名-->
    <typeAliases>
        <package name="com.xbf.pojo"/>
    </typeAliases>

    <!--数据源的配置-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="1234567890"/>
            </dataSource>
        </environment>
    </environments>

    <!--mapper映射器-->
    <mappers>
        <mapper resource="com/xbf/dao/UserMapper.xml"/>
    </mappers>

</configuration>

5.测试类的编写:

public class Test {

    @org.junit.Test
    public void test() throws IOException {
        //1.
        String resource="mybatis-config.xml";
        InputStream in = Resources.getResourceAsStream(resource);

        //2.获得sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);

        //3.获得sqlSession对象  开启事务管理
        SqlSession sqlSession = sqlSessionFactory.openSession(true);

        //4.实体 mapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //5.执行方法
        List<User> user = mapper.getUser();

        System.out.println(user);
    }

}

案例二:mybatis-spring的整合:

注意:需要在mybatis基础上再导3个包( spring-webmvc ,编织包(横向织入),spring-jdbc (spring数据库连接包),mybatis-spring(Spring-nybatis整合包)):

整体流程的概述:

spring:(过程总结)
1.编写pojo实体类(User)
2.定义接口(UserMapper)---》定义数据库的增删删除操作
3.定义接口的实现类---》
  主要是为了sqlSession属性,好在Bean中实现注册
  写全接口的增删改查操作
  (利用sqlSession.getMapper()实现)
4.编写UserMapper.xml配置文件---》编写增删改查的sql语句
5.编写mybatis核心配置文件---》主要配置UserMapper.xml,数据源信息已不再其中
6.编写applicationContext.xml文件
  6.1 数据源的配置;
  6.2 通过SqlSessionFactoryBean 创建sqlSessionFactory对象,
      并在Spring中配置mybatis核心配置文件
  6.3 通过sqlSessionFactory对象创建sqlSession对象
  6.4在接口的实现类(UserMapperImpl)加入sqlSession属性
  6.5在Spring bean中进行实现类对象的注册
7.测试:
  7.1加载 spring配置文件,获得conText对象
  7.2获得实现的Bean对象
  7.3调用实现类中的增删改查的方法

1.pojo实体类:User

public class User {

    private String name;
    private String pwd;
    private int id;

    public User() {
    }

    public User(String name, String pwd, int id) {
        this.name = name;
        this.pwd = pwd;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "name=‘" + name + ‘\‘‘ +
                ", pwd=‘" + pwd + ‘\‘‘ +
                ", id=" + id +
                ‘}‘;
    }
}

2.接口的定义:UserMapper

public class UserMapperImpl implements UserMapper {

    //添加sqlSession属性
    private SqlSession sqlSession;

    public void setSqlSession(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List<User> getUser() {

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        return mapper.getUser();
    }
}

3.接口实现类的编写:UserMapperImpl

public class UserMapperImpl implements UserMapper {

    //添加sqlSession属性
    private SqlSession sqlSession;

    public void setSqlSession(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    public List<User> getUser() {

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        return mapper.getUser();
    }
}

4.接口的配置文件:UserMapper.xml

<?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">

<mapper namespace="com.xbf.dao.UserMapper">
    <select id="getUser" resultType="User">
        select * from user
    </select>
</mapper>

5.mybatisde核心配置文件:mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <!--实体类的别名-->
    <typeAliases>
        <package name="com.xbf.pojo"/>
    </typeAliases>

    <!--mapper映射器-->
    <mappers>
        <mapper resource="com/xbf/dao/UserMapper.xml"/>
    </mappers>

</configuration>

6.spring 的配置文件:applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--1.数据源信息-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="1234567890"/>
    </bean>

    <!--2.创建sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>

    </bean>

    <!--3.创建sqlSession-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

    <!--4.加入sqlSession属性-->

    <!--5.实体类对象的注入-->
    <bean id="user" class="com.xbf.dao.UserMapperImpl">
        <property name="sqlSession" ref="sqlSession"/>
     </bean>

</beans>

7.测试类的编写:

public class Test {

    @org.junit.Test
    public void test(){

        //1.加载配置文件
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

        UserMapperImpl user = (UserMapperImpl)context.getBean("user");

        List<User> users = user.getUser();

        for (User user1 : users) {
            System.out.println(user1);
        }

    }

}

总结:

区别点:

1.数据源的位置不同;

2.spring整合中有了接口的实现类的编写(测试变的更简便);

原文地址:https://www.cnblogs.com/xbfchder/p/11267184.html

时间: 2024-11-05 21:40:19

Spring的学习____X. spring 和mybatis的整合的相关文章

Spring框架学习02——Spring IOC 详解

1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用另一个Java对象(被调用者)时,在传统编程模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象.这种方式会增加调用者与被调用者之间的耦合性,不利于后期代码的升级与维护.当Spring框架出现后,对象的实例不再由调用者来创建,而是由Spring容器来创建.Spring容器会负责控制程序之

Spring boot 学习六 spring 继承 mybatis (基于注解)

MyBatis提供了多个注解如:@InsertProvider,@UpdateProvider,@DeleteProvider和@SelectProvider,这些都是建立动态语言和让MyBatis执行这些语言使用基于注解的mybatis的方法,还是比较好用的. 一 首先是定义mapper, @ SelectProvider去声明类(CitySqlProvide)和方法名(findByState), public interface CityMapper { @SelectProvider(ty

Spring+Maven学习实验- Spring AOP面向切面编程(二)

在 Spring AOP 中,有 3 个常用的概念,Advices . Pointcut . Advisor ,解释如下: Advices :表示一个 method 执行前或执行后的动作. Pointcut :表示根据 method 的名字或者正则表达式去拦截一个 method . Advisor : Advice 和 Pointcut 组成的独立的单元,并且能够传给 proxy factory 对象. 我们可以用名字匹配法和正则表达式匹配法去匹配要拦截的 method . 1 Pointcut

Spring MVC 学习笔记 spring mvc Schema-based configuration

Spring mvc 目前支持5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller, mvc:resources和mvc:default-servlet-handlermvc:annotation-driven   注册 DefaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter两个bean,及一系列缺省的messageconverter(需要c

Spring Boot学习笔记——Spring Boot与Redis的集成

一.添加Redis缓存 1.添加Redis起步依赖 在pom.xml中添加Spring Boot支持Redis的依赖配置,具体如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version> </

Spring Cloud 学习 (六) Spring Cloud Config

在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置.日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的.随着服务数量的增加,配置文件的管理也是一件非常复杂的事 在微服务架构中,需要有统一管理配置文件的组件,例如 Spring Cloud 的 Spring Cloud Config.阿里的 Diamond.百度的 Disconf.携程的 Apollo 等 新建 spring-cloud-config-server 从本地读取配置 pom <parent> <arti

Spring Cloud 学习 (八) Spring Boot Admin

Spring Boot Admin 用于管理和监控一个或者多个 Spring Boot 程序 新建 spring-boot-admin-server pom <parent> <artifactId>spring-cloud-parent</artifactId> <groupId>com.karonda</groupId> <version>1.0.0</version> </parent> <mode

Spring Cloud 学习——7. Spring Cloud Config

1. 前言 本文介绍一个 通过 Spring Cloud Config + git 实现 Spring Cloud 项目的配置中心化的简单实践. 在一个分布式系统中,存在着各种微服务,而每一种服务可能都有几十甚至几百个实例在运行.虽然这些实例被分别部署在不同的机器上(或者网络节点中),但是他们需要一致对外提供服务,所以他们必须对所有的配置项都具有相同的配置值.而如果将这些配置项都保存在各个实例的本地上,那么一份配置就会存在几十上百个副本,这种情况下,一旦需要修改某一个配置值,这种运维上的难度可想

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.