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+MyBatis-Plus整合及步骤详解 -> 正文阅读

[Java知识库]Spring+MyBatis+MyBatis-Plus整合及步骤详解

准备工作(文件名要取好,不然后面一堆bug)

  1. 了解Maven,参考
  2. 设计数据库表
  3. 了解MyBatis,导一个包参考
 <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
  1. 了解Spring ,参考
  2. 了解SpringMVC
  3. 知道哪里去找依赖吗?
    在这里插入图片描述
    https://mvnrepository.com/artifact/org.springframework
  4. 了解spring常用jar包功能:(我个人用的5.1.2版本)
<!-- 1.Spring核心依赖 -->
        <!--Spring的核心工具包,其他包依赖此包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
        <!--Spring IOC的基础实现,包含访问配置文件、创建和管理bean等。-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
        <!--在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,
        有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
<!-- 2.Spring dao依赖 -->
    <!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
         <!--对JDBC 的简单封装-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
        <!--为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
 <!-- 3.Spring web依赖 -->
        <!--包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
        <!--包含SpringMVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、 Tiles、Velocity、XSLT相关类。
        当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        
<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
        <!--对JUNIT等测试框架的简单封装-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.2.RELEASE</version>
      </dependency>

一、Spring+MyBatis整合

主要解决的问题就是将 SqlSessionFactory 对象交由 Spring来管理。
整合常用的方式:扫描的 Mapper 动态代理

1. 导入spring和mybatis相关依赖

 <dependencies>
         <!-- Mybatis Spring 整合适配包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.2</version>
        </dependency>
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!-- spring-context-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <!-- Spring JDBC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <!-- Spring aspect 面向切面编程 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
        <!-- spring-tx-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
    </dependencies>

2. 创建 log4j2.properties(不强求创建)

pom.xml:

        <!--日志-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.12.1</version>
        </dependency>

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件,甚至是套接口服务器、NT的事件记录器等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

在resource下面创建log4j2.properties:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="Console"/>
        </Root>
        <logger name="java.sql" level="DEBUG"></logger>
        <logger name="org.apache.ibatis" level="INFO"></logger>
    </Loggers>
</Configuration>

3. 定义 MyBatis 主配置文件

主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器来管理了。

创建mybatis.xml或者mybatis-config.xml:

全局属性mapUnderscoreToCamelCase,设为true 可以自动将以下画线方式命名的数据库列映射到 Java 对象的驼峰式命名属性中。

<?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="mapUnderscoreToCamelCase" value="true"/>
        <!--配置log4j2-->
        <setting name="logImpl" value="LOG4J2"/>
    </settings>
</configuration>

4. Spring配置数据源

  1. spring配置数据源的步骤
    ① 导入数据源的坐标和数据库驱动坐标
  <!-- 数据库连接驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>
        <!-- 数据库连接池c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

② 创建数据源对象——将DataSource的创建权交由Spring容器去完成

在类路径下(resources)创建applicationContext.xml配置文件

在这里插入图片描述
如果出现这种情况,就找到project structure——>module
在这里插入图片描述
在这里插入图片描述

<!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
        <property name="user" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>

        <property name="minPoolSize" value="${jdbc.miniPoolSize}"/>
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
        <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
        <property name="checkoutTimeout" value="${jdbc.checkoutTimeout}"/>
    </bean>

③ 设置数据源的基本连接数据

新建一个db.properties文件,在里面编写代码:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名
jdbc.username=root
jdbc.password=root

看自己数据库用户和密码是多少,我设置的root

然后在applicationContext.xml里面继续配置
在这里插入图片描述

<context:property-placeholder location="classpath:db.properties"/>

④ 使用数据源获取连接资源和归还连接资源


  1. 我们为什么要使用数据库连接池?——以空间换时间

因为建立一个数据库连接是一个非常耗时耗力的事,如果使用连接池,当我们需要连接数据库服务器的时候,只需去连接池中取出一条空闲的连接,而不是新建一条连接。这样我们就可以大大减少连接数据库的开销,从而提高了应用程序的性能。


在JDBC编程中,每次创建和断开Connection对象都会消耗一定的时间和IO资源。这是因为在Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源,Java程序则要把代表连接的java.sql.Connection对象等加载到内存中,所以建立数据库连接的开销很大

为了避免频繁地创建数据库连接,工程师们提出了数据库连接池技术。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立.

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,当应用程序访问数据库时并不是直接创建Connection,而是向连接池“申请”一个Connection。如果连接池中有空闲的Connection,则将其返回,否则创建新的Connection。使用完毕后,连接池会将该Connection回收,并交付其他的线程使用,以减少创建和断开数据库连接的次数,提高数据库的访问效率。

在这里插入图片描述

  <!-- 数据库连接池c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
       <dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.12</version>
		</dependency>

二者区别:
C3P0是一个快要淘汰的技术,操作和使用起来的话还是非常简单的,对于简化对数据库的操作来说还是非常的方便的。
Druid是目前最主流的连接池的技术,出自阿里巴巴也是使用得最多的连接池技术。
在这里插入图片描述

  1. 注册 SqlSessionFactoryBean(在这里插入图片描述4. 定义 Mapper 扫描配置器 MapperScannerConfigurer

Mapper 扫描配置器 MapperScannerConfigurer 会自动生成指定的基本包中 mapper 的代
理对象。该 Bean 无需设置 id 属性

在这里插入图片描述

或者也可以

 <!--配置sqlSessionFactory对象-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--设置数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--指定mybatis全局配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
        <!--指定mapper映射文件-->
        <property name="mapperLocations" value="classpath:com/abc/dao/*.xml"/>
    </bean>

注意:这里很容易出问题,你不要看我写的,要对照你自己创建的文件名来改
在这里插入图片描述

二、Spring+MyBatis+MyBatisPlus整合

1. 为什么用MyBatis-plus??——一个字,强

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生
官网文档入门:https://baomidou.com/pages/24112f/

在这里插入图片描述

2. 在pom.xml文件中加入依赖,去掉mybatis-spring和mybatis依赖

<!-- mybatis-plus插件依赖 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus</artifactId>
			<version>3.1.1</version>
		</dependency>
 <!--简化bean代码的工具包:用注解取代get set方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.4</version>
        </dependency>

注意!!!
在这里插入图片描述
在这里插入图片描述

我就因为没有去掉另外两个导致test一直出错,心态不好了。

3. Idea连接mysql数据库并生成对应的实体类

关于时区问题
使用IDEA自动生成Java实体类

右击表,选择scripted Extensions——>Generate POJOs.groovy,一键生成POJO实体类
在这里插入图片描述
当然,因为导入了简化bean的Lombok,所以也可以这样
在这里插入图片描述
在这里插入图片描述

但是个人觉得,利用Idea的database数据库插件导入的实体类,已经把set、get方法给你自动写好了,你再动动鼠标或者Alt+Insert,补全也快,毕竟那三个注解只有@Data好记。
在这里插入图片描述
在这里插入图片描述

4.创建mapper接口

  1. 创建mapper文件夹,文件夹下创建UserMapper接口
  2. 将UserMapper继承BaseMapper,将拥有了BaseMapper中的所有方法
    在这里插入图片描述

5. 在applicatioinContext.xml里面配置MyBatis-plus

在这里插入图片描述

  <!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
 <bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--扫描mapper接口,使用的依然是Mybatis原生的扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.example.mapper"/>
    </bean>

6. 测试

在这里插入图片描述
测试要用到的资源也要复制粘贴一下
在这里插入图片描述
在这里插入图片描述

public class Test {

    @Autowired
    private UserMapper userMapper;

    @org.junit.Test
    public void testSelectList() {
        List<User> users = userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }

在这里插入图片描述
成功啦

参考:https://www.zhihu.com/question/349816338/answer/2388179567

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 21:56:42  更:2022-03-17 21:59:07 
 
开发: 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/24 9:44:52-

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