SpringBoot整合Druid、Mybatis、MybatisPlus以及MybatisPlus的使用

news2024/11/13 15:30:26

1.SpringBoot整合Druid

1)引入jar包

   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.2.3</version>
   </dependency>

2)在application.yml中

# 数据源
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/springboot_mybatis?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    #   数据源其他配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
    #初始化时运行sql脚本
    schema: classpath:sql/schema.sql
    initialization-mode: always

    druid:
      #开启druid 监控台servlet
      stat-view-servlet:
        enabled: true
        login-username: admin
        loginPassword: 123456
      #开启druid 监控filter
      web-stat-filter:
        enabled: true

注意: initialization-mode: always 第一次用过之后注释掉,或者将其改成never

3).启动项目,访问:http://127.0.0.1:8080/druid/    

     用户名:admin/密码:123456(在配置文件中有)

2.SpringBoot整合Mybatis

ps:还记得mybatis中的sqlSessionFactory要传入一个dataSource吗?所以我们先学习了druid。

1)关于逆向工程:我们更多的使用插件plugin的方式

(注意:mybatis的逆向工程生成的是mapper接口和mapper.xml文件

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。)

Mybatis逆向工程_飞鸟的心情的博客-CSDN博客

2)集成mybatis

   第一步:jar包引入:  

   <!--mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

   第二步:

   在application.yml中:

#设置mybatis
mybatis:
  mapper-locations: classpath:com/tulingxueyuan/mapper/*Mapper.xml
  typeAliasesPackage: com.tulingxueyuan.pojo
  configuration:
    mapUnderscoreToCamelCase: true
  • typeAliasesPackage 的作用就是指定一个包名,在该包中的所有类都会被自动注册为 MyBatis 的别名,无需显式在 XML 配置文件中指定别名。这可以减少在 XML 配置文件中的重复工作,同时使得配置更加简洁。
  • mapUnderscoreToCamelCase: true的作用是:(参考如下代码)其中的查询结果就算没有resultMap映射,那么也可以将dept_name字段映射成deptName
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
  select id, dept_name
  from dept
  where id = #{id,jdbcType=INTEGER}
</select>

  第三步:

在启动类中加入:@MapperScan("com.tulingxueyuan.mapper")

@SpringBootApplication
@MapperScan("com.tulingxueyuan.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

  ok,集成好了。

3.SpringBoot整合MybatisPlus

Idea先安装插件MybatisX

官网:MyBatis-Plus

1.引入jar包:

这里使用的是3.4.2的版本,还有其他版本在mvn repository中查找

  <!-- mybatis-plus   不需要再额外引入mybatis了-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>

2.集成配置:

application.yml中:

# 数据源
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/mybatisplus?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #初始化时运行sql脚本
    schema: classpath:sql/schema.sql
    initialization-mode : never
logging:
  level:
    root: info
    com.tulingxueyuan: debug  #设置日志级别 mp的mapper日志级别
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false  #下划线命名转化为驼峰命名

sql文件的内容:

-- 创建表
CREATE TABLE tbl_employee(
   id INT(11) PRIMARY KEY AUTO_INCREMENT,
   last_name VARCHAR(50),
   email VARCHAR(50),
   gender CHAR(1),
   age INT
);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Tom','tom@atguigu.com',1,22);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Jerry','jerry@atguigu.com',0,25);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('Black','black@atguigu.com',1,30);
INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('White','white@atguigu.com',0,35);

启动类中:

@SpringBootApplication
@MapperScan("com.tulingxueyuan.mbp.mapper")
public class QuickStartApplication {

    public static void main(String[] args) {
        SpringApplication.run(QuickStartApplication.class, args);
    }

}

3.编写mapper接口和servcie接口

   看下图的重点:编写的接口都要继承通用的Mapper和Servcie接口:BaseMapper和IService

mapper中:

package com.tulingxueyuan.mbp.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tulingxueyuan.mbp.pojo.Employee;

public interface EmployeeMapper extends BaseMapper<Employee> {
}

service中:

package com.tulingxueyuan.mbp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tulingxueyuan.mbp.pojo.Employee;

public interface EmployeeService extends IService<Employee> {
}

   serviceImpl中:

package com.tulingxueyuan.mbp.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tulingxueyuan.mbp.mapper.EmployeeMapper;
import com.tulingxueyuan.mbp.pojo.Employee;
import com.tulingxueyuan.mbp.service.EmployeeService;
import org.springframework.stereotype.Service;

/***
 *
 *  service实现类   继承mp提供通用的service基类
 *  ServiceImpl<EmployeeMapper, Employee>
 *      2个泛型 1.EmployeeMapper  Mapper接口
 *              2.Employee  对应Pojo
 */
@Service
public class EmployeeImplService extends 
ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {


}

  4.创建实体类pojo

package com.tulingxueyuan.mbp.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;


//  mp 会默认将pojo类名当表名,如果类名和表名不一致可以使用注解
@TableName("tbl_employee")
public class Employee {
    // mp 会自动识别pojo类中名为id的属性,如果名字叫id就会当做是主键
    // 如果你的注解没有赋值那它会帮你使用ID_WORKER的生成策略, 主要是为了防止你忘记给主键赋值
    // 如果字段是自动增长需要手动改一下生成策略
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @TableField("last_name")
    private String lastName;
    private String email;
    private Integer gender;
    private Integer age;
    @TableField(exist = false)
    private String genderName; // 这个字段在表中是没有的

    public String getGenderName() {
         if(gender==0){
             return "女";
         }
         else
         {
             return "男";
         }
    }


    public Employee() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Employee(Integer id, String lastName, String email, Integer gender, Integer age) {
        super();
        this.id = id;
        this.lastName = lastName;
        this.email = email;
        this.gender = gender;
        this.age = age;
    }
 
    //getter和setter省略...    

    @Override
    public String toString() {
        return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + getGenderName()+", age="
                + age + "]";
    }


}

ok,以上就是springboot集成MybatisPlus的过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/891633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++新经典03--共用体、枚举类型与typedef

共用体 共用体&#xff0c;也叫联合&#xff0c;有时候需要把几种不同类型的变量存放到同一段内存单元&#xff0c;例如&#xff0c;把一个整型变量、一个字符型变量、一个字符数组放在同一个地址开始的内存单元中。这三个变量在内存中占的字节数不同&#xff0c;但它们都从同…

Java开源项目mall学习笔记(1)——项目初始化

一、学习声明与项目介绍 该笔记是记录学习开源项目mall过程的文档笔记&#xff0c;完全原创&#xff0c;转载请声明。同时也对开源项目的作者表示感谢&#xff01; mall: &#x1f525; mall项目是一套基于 SpringBoot Vue uni-app 实现的电商系统&#xff0c;包括前台商城项…

基于springboot+vue的武汉旅游网(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

快速搭建园林园艺商城小程序的五个关键步骤

园艺设计是现代人们爱好的一项活动&#xff0c;通过设计和布置花园&#xff0c;营造出美丽的自然景观&#xff0c;给人们带来舒适和愉悦的感觉。如今&#xff0c;随着科技的发展&#xff0c;园林园艺小程序商城成为了园艺爱好者们购物和交流的新平台。本文将为大家介绍一个简单…

Modbus_TCP协议如何使用?

1 驱动简介 网关支持标准的Modbus-TCP协议&#xff0c;支持Modbus-TCP协议的设备&#xff08;例如智能仪表、电表等&#xff09;&#xff0c;都可以通过此协议直接通讯&#xff0c;实现远程采集、监控、控制设备的功能。 从站号&#xff1a;默认为1&#xff0c;需要查看设备说…

【实际开发21】- 项目部署

目录 1. 项目打包方式就两种 : war、jar 1. Windows 环境运行 Jar 包 2. Windows 后台运行 jar 包 1. cmd 下执行方式 2. bat 批处理方式 - ( Batch ) 3. 启动 : 在 xx.jar 同级目录下建立 run.bat 文件 4. 项目部署打包 忽略 test 文件 2. CICD 自动化部署 3. 代码质…

数据结构—散列表的查找

7.4散列表的查找 7.4.1散列表的基本概念 基本思想&#xff1a;记录的存储位置域关键字之间存在对应关系 ​ 对应关系——hash函数 ​ Loc&#xff08;i&#xff09; H&#xff08;keyi&#xff09; 如何查找&#xff1a; 根据散列函数 H(key) k 查找key9&#xff0c;则访…

【刷题笔记8.17】LeetCode:最长公共前缀

LeetCode&#xff1a;最长公共前缀 &#xff08;一&#xff09;题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 &#xff08;二&#xff09;分析 纵向扫描时&#xff0c;从前往后遍历所有字符串的每一列&am…

python开发环境准备

python开发环境准备 文章目录 python开发环境准备windows安装配置python3下载配置 安装pip&#xff08;通过get-pip.py&#xff09;测试与问题 测试python windows安装配置python3 校验日期 &#xff1a;2023年8月11日 下载 下载地址 官网地址 版本分为推荐下载最新的版本和…

leetcode 377. 组合总和 Ⅳ

2023.8.17 本题属于完全背包问题&#xff0c;乍一看和昨天那题 零钱兑换II 类似&#xff0c;但细看题目发现&#xff1a;今天这题是排列问题&#xff0c;而“零钱兑换II”是组合问题。排列问题强调顺序&#xff0c;而组合顺序不强调顺序。 这里先说个结论&#xff1a;先遍历物品…

原码、反码、补码,进制转换,有符号数和无符号数转换

计算机底层存储数据时&#xff0c;存储的是数据对应的二进制数字。对于整型数据&#xff0c;其二进制表示形式有三种&#xff0c;分别是&#xff1a;原码、反码、补码&#xff0c;而实际存储的是整型数据的补码。 原码、反码以及补码都是有符号的&#xff0c;其中最高位存放符…

windows系统丢失mfc120u.dll的解决方法

1.mfc120u.dll是什么 mfc120u.dll是Windows操作系统中的一个动态链接库&#xff08;Dynamic Link Library&#xff0c;简称DLL&#xff09;文件。它包含了一些用于运行C程序的函数和其他资源。这个特定的DLL文件是Microsoft Foundation Classes&#xff08;MFC&#xff09;库的…

LangChain源码逐行解密之系统(二)

LangChain源码逐行解密之系统 20.2 serapi.py源码逐行剖析 我们可以看一下Google查询的例子,在LangChain中有多种实现的方式。 如图20-5所示,在utilities的serpapi.py代码文件中实现了SerpAPIWrapper。 图20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目录的se…

matplotlib从起点出发(7)_Tutorial_7_Artist

1 Artist教程 使用Artist对象来渲染画布。 matplotlib API一共有三个层次&#xff1a; matplotlib.backend_bases.FigureCanvas是绘制图形的区域&#xff1b;matplotlib.backend_bases.Renderer是知道如何在FigureCanvas上绘制的对象&#xff1b;matplotlib.artist.Artist是…

[NOIP2008 提高组] 传纸条——DP+优化

传纸条——DP优化 [NOIP2008 提高组] 传纸条题目描述输入格式输出格式样例样例输入样例输出 提示 温馨提示结题思路四维DP&#xff08;不推荐&#xff09;三维DP&#xff08;推荐&#xff09; A C 代码 [NOIP2008 提高组] 传纸条 题目描述 小渊和小轩是好朋友也是同班同学&am…

代码审计-Java项目审计-SQL注入漏洞

代码审计必备知识点&#xff1a; 1、代码审计开始前准备&#xff1a; 环境搭建使用&#xff0c;工具插件安装使用&#xff0c;掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集&#xff1a; 审计目标的程序名&#xff0c;版本&#xff0c;当前环境(系统,中间件…

挑选最佳编程神器

选择适合的编程软件对于STM32开发至关重要。以下是几个值得推荐的软件&#xff1a;Arduino IDE&#xff1a;适用于跨单片机型号的编程。通过编写通用的Arduino代码&#xff0c;支持多达140多种主流单片机型号。无论是51、ST、ESP、GD、恩智浦、树莓派等&#xff0c;都可以使用统…

KVM虚拟机管理

1、创建、删除快照 关机 init0 列出快照 删除快照 2、虚拟机迁移 报错 解决&#xff1a;关闭防火墙&#xff0c;关闭selinux 其他解决办法&#xff1a;kvm热迁移使用nfs共享存储报错_莉法的博客-CSDN博客

serve : 无法将“serve”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

1、在学习webpack打包的时候&#xff0c;需要 serve用来启动开发服务器来部署代码查看效果的。安装完之后运行出现以下错误&#xff1a; 2、使用命令查看安装目录&#xff1a; npm list -g我们已经安装过了 3、解决&#xff1a; 我们看到上图路径在&#xff1a;C:\Users\qiy…

SpringBoot整合Shiro实现登录认证,鉴权授权

文章目录 前言一、shiro简介二、环境搭建2.1.数据库2.1.1user用户表2.1.2user_role用户角色关系表2.1.3role角色表2.1.4role_permission角色权限关系表2.1.5permission权限表 2.2导坐标2.3实体类2.3.1User2.3.2Role2.3.3Permission 2.4MVC三层2.4.1User2.4.1.1mapper层2.4.1.2s…