IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring集成MyBatis -> 正文阅读

[Java知识库]Spring集成MyBatis

????????Spring通过IOC技术,能集成很多的框架,是Spring的一个优势,让开发人员使用其他框架更加方便。Spring像插线板一样,MyBatis框架是插头,可以容易的组合到一起。

一、MyBatis 与 Spring 如何整合?

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

1、Dao接口的代理对象

????????定义一个接口后,需要实现它的代理对象,使用SqlSession.getMapper(StudentDao.class),得到Dao的代理对象

2、SqlSessionFactory

????????创建SqlSessionFactory对象,才能使用openSession()得到SqlSession对象

3、数据源DataSource

????????创建连接数据库的数据源,使用连接池对象代替mybatis自己的PooledDataSource

二、MyBatis 与 Spring 整合步骤

1使用MySQL数据库,创建学生表student,进行测试
2创建Maven项目:spring-mybatis
3

加入Maven依赖:Spring依赖,MyBatis依赖,MySQL驱动,junit依赖,MyBatis-Spring依赖,Spring事务依赖

4创建实体类Student,运用lombok创建get和set
5创建Dao接口和Mapper文件写SQL语句
6写MyBatis的主配置文件:mybatis.xml
7创建Service接口和它的接口实现类
8

创建Spring的配置文件

1)声明数据源DataSource,使用的阿里的Druid连接池

2)声明SqlSessionFactoryBean类,在这个类内部创建的是SqlSessionFactory对象

3)声明MapperScannerConfiguration类,在内部创建Dao代理对象。放在Spring容器中

4)声明Service对象,把 3)的Dao赋值给Service属性

三、MyBatis 与 Spring 整合实现

1、MyQL建student表

2、创建Maven项目

3、pom文件配置

<dependencies>
    <!--lomok依赖-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>
    <!--单一测试依赖-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <!--Spring 依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
    <!--Spring事务依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
    <!--MyBatis依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.12</version>
    </dependency>
</dependencies>
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

4、定义实体类 Student

@Data
public class Student {
    private Integer id ;
    private String name ;
    private Integer age ;
}

5、 定义Dao接口和Mapper文件

1)StudentDao接口?

public interface StudentDao {
    // 新增一条数据
    int insertStudent(Student student);
    // 查询所有数据
    List<Student> selectStudents();
}

2)定义映射文件StudentDao.xml

在 Dao 接口的包中创建 MyBatis 的映射文件 Mapper,命名与接口名相同,本例为StudentDao.xml。 Mapper中的 namespace 取值也为 Dao 接口的全限定性名
注意:要将Mapper文件的Dao接口放在同一包下
<?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">
<!--注意 namespace 后面 跟自己的包路径-->
<mapper namespace="com.dgs.dao.StudentDao">
    <insert id="insertStudent">
        insert into student (name,age)
        values (#{name},#{age});
    </insert>
    <select id="selectStudents" resultType="com.dgs.entity.Student">
        select name ,age from student
    </select>
</mapper>

6、编写MyBatis的主配置文件:mybatis.xml

在 resources根目录下定义 MyBatis 的主配置文件,命名为 mybatis.xml。这里有两点需要注意:
(1)主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器来管理了。
(2)这里对 mapper 映射文件的注册,使用<package/>标签,即只需给出mapper 映射文件所在的包即可。因为 mapper 的名称与 Dao 接口名相同,可以使用这种简单注册方式。这种方式的好处是,若有多个映射文件,这里的配置也是不用改变的。当然,也可使用原来的<resource/>标签方式。

<?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>
    <!-- 设置日志 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <!--别名-->
    <typeAliases>
        <package name="com.dgs.entity"/>
    </typeAliases>
    <!-- 指定其他mapper文件的位置-->
    <mappers>
        <package name="com.dgs.dao"/>
    </mappers>
</configuration>

7、定义Service接口和实现类

1)创建StudentService接口:

public interface StudentService {
    // 新增一条数据
    int insertStudent(Student student);
    // 查询所有数据
    List<Student> selectStudents();
}

2)创建StudentServiceImpl接口实现类

@Service
public class StudentServiceImpl implements StudentService {
    @Resource
    private StudentDao studentDao;
    // 新增一条数据
    @Override
    public int insertStudent(Student student) {
        return  studentDao.insertStudent(student);
    }
    // 查询所有数据
    @Override
    public List<Student> selectStudents() {
        return studentDao.selectStudents();
    }
}

8、创建Spring的配置文件

1)数据源的配置

使用 JDBC 模板,首先需要配置好数据源,数据源直接以 Bean 的形式配置在 Spring 配置文件中。根据数据源的不同,其配置方式不同。
Spring 配置文件:使用Druid连接池

?2)注册SqlSessionFactoryBean

3)定义Mapper扫描配置器MapperScannerConfigurer

?

?4)包扫描service,注入接口

?5)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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--声明数据源-->
    <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="jdbc:mysql://localhost:3306/dgs_study" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>

    <!--声明SqlSessionFactory-->
    <bean  id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="myDataSource" />
        <property name="configLocation" value="classpath:mybatis.xml" />
    </bean>

    <!--声明MapperScannerConfiguration-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="factory"/>
        <property name="basePackage" value="com.dgs.dao"/>
    </bean>

    <context:component-scan base-package="com.dgs.service" />
    
</beans>

9、Spring和MyBatis整合测试

public class AppTest {
    @Test
    public void test() {
        String config = "applicationContext.xml";
        ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
        String[] names = ctx.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
        StudentService bean = (StudentService)ctx.getBean("studentServiceImpl");
        int i = bean.insertStudent(new Student());
        System.out.println(i);
        List<Student> students = bean.selectStudents();
        System.out.println(students);
    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:13:45  更:2022-05-16 11:14:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:59:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码