09MyBatisX插件

news2024/12/23 14:54:40

MyBatisX插件

在真正开发过程中对于一些复杂的SQL和多表联查就需要我们自己去编写代码和SQL语句,这个时候可以使用MyBatisX插件帮助我们简化开发

  • 安装MyBatisX插件: File -> Settings -> Plugins -> 搜索MyBatisx插件搜索安装然后重启IDEA

跳转文件功能

由于一个项目中的mapper接口和映射文件有很多找起来很麻烦, 而MyBatisX插件可以快速找到mapper接口对应的映射文件以及映射文件对应的mapper接口

application.xml文件中指定SQL映射文件的位置,mybatis-plus的mapper-locations属性可以指定配置文件的位置(默认从类路径下的mapper目录下加载)

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #设置MyBatis-Plus的全局配置
  mapper-locations: SQL映射文件的路径

在这里插入图片描述

代码生成功能

第一部: 创建一个Spring Boot工程并引入相关依赖, 在application.yml文件中配置数据源的连接信息

spring:
  # 配置数据源信息
 datasource:
    # 配置数据源类型(Spring boot默认使用的数据源)
    type: com.zaxxer.hikari.HikariDataSource
    # 配置连接数据库的各个信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false
    username: root
    password: 123456
<dependencies>
    <dependency>
        <!--spring boot的启动器-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <!--spring boot的测试启动器-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <!--mybatis-plus的启动器-->
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <!--简化实体类开发的依赖(还需要下载lombok插件)-->
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <!--mysql的驱动,Spring boot默认的是8以上的版本-->
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

第二步: 在IDEA的Database中设置参数连接本地的MySQL数据库

在这里插入图片描述

第三步: 使用MyBatisX插件设置生成表相关的mapper,service,映射文件的存放位置

在这里插入图片描述

查看mapper接口,mapper接口的映射文件,service接口及其实现类的最终生成位置

在这里插入图片描述

自定义方法和SQL

根据mapper接口中的自定义的模板方法名在SQL映射文件中生成对应的增删改查的SQL语句,自动将mapper接口中的方法与映射文件的SQL语句相关联

  • 自定义增删改查的方法时一般以insert,select,update,delete为前缀

在这里插入图片描述

public interface UserMapper extends BaseMapper<User> {
    //添加数据时,如果实体类属性为null则不为该属性对应的字段赋值
    int insertSelective(User user);
    //根据uid和username删除用户
    int deleteByUidAndUserName(@Param("uid") Long uid, @Param("userName") String userName);
    //根据uid更新用户的年龄和性别
    int updateAgeAndSexByUid(@Param("age") Integer age, @Param("sex") Integer sex, @Param("uid") Long uid);
    //查询年龄和性别根据年龄的区间范围
    List<User> selectAgeAndSexByAgeBetween(@Param("beginAge") Integer beginAge, @Param("endAge") Integer endAge);
    //查询所有字段根据年龄降序
    List<User> selectAllOrderByAgeDesc();
}
<?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.atguigu.mybatisx.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.atguigu.mybatisx.pojo.User">
        <id property="uid" column="uid" jdbcType="BIGINT"/>
        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
        <result property="age" column="age" jdbcType="INTEGER"/>
        <result property="email" column="email" jdbcType="VARCHAR"/>
        <result property="sex" column="sex" jdbcType="INTEGER"/>
        <result property="isDeleted" column="is_deleted" jdbcType="INTEGER"/>
    </resultMap>
	<!--SQL片段,记录表中的所有字段-->
    <sql id="Base_Column_List">
        uid,user_name,age,email,sex,is_deleted
    </sql>
    <!--int insertSelective(User user);-->
    <insert id="insertSelective">
        insert into t_user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="uid != null">uid,</if>
            <if test="userName != null">user_name,</if>
            <if test="age != null">age,</if>
            <if test="email != null">email,</if>
            <if test="sex != null">sex,</if>
            <if test="isDeleted != null">is_deleted,</if>
        </trim>
        values
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="uid != null">#{uid,jdbcType=BIGINT},</if>
            <if test="userName != null">#{userName,jdbcType=VARCHAR},</if>
            <if test="age != null">#{age,jdbcType=INTEGER},</if>
            <if test="email != null">#{email,jdbcType=VARCHAR},</if>
            <if test="sex != null">#{sex,jdbcType=INTEGER},</if>
            <if test="isDeleted != null">#{isDeleted,jdbcType=INTEGER},</if>
        </trim>
    </insert>
    <!--int deleteByUidAndUserName(@Param("uid") Long uid, @Param("userName") String userName);-->
    <delete id="deleteByUidAndUserName">
        delete from t_user where uid = #{uid,jdbcType=NUMERIC} AND user_name = #{userName,jdbcType=VARCHAR}
    </delete>
    <!--int updateAgeAndSexByUid(@Param("age") Integer age, @Param("sex") Integer sex, @Param("uid") Long uid);-->
    <update id="updateAgeAndSexByUid">
        update t_user set age = #{age,jdbcType=NUMERIC},sex = #{sex,jdbcType=NUMERIC} where uid = #{uid,jdbcType=NUMERIC}
    </update>
    <!--List<User> selectAgeAndSexByAgeBetween(@Param("beginAge") Integer beginAge, @Param("endAge") Integer endAge);-->
    <select id="selectAgeAndSexByAgeBetween" resultMap="BaseResultMap">
        select age, sex from t_user where age between #{beginAge,jdbcType=INTEGER} and #{endAge,jdbcType=INTEGER}
    </select>
    <!--List<User> selectAllOrderByAgeDesc();-->
    <select id="selectAllOrderByAgeDesc" resultMap="BaseResultMap">
        select <include refid="Base_Column_List"/> from  t_user order by age desc
    </select>
</mapper>

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

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

相关文章

Linux用户和用户组信息管理

文章目录 用户管理用户密码信息/etc/shadow详解 ⽤户组的管理(切换到root)/etc/group 内容详解用户组的添加用户组的删除用户组的查看用户组的修改 ⽤户组和⽤户的关联 用户管理 ⽤户的管理(/etc/passwd) ⽤户的添加&#xff08;useradd&#xff09; ⽤户的删除&#xff08;us…

Spring boot原理

起步依赖 Maven的传递依赖 自动配置 Springboot的自动配置就是当spring容器启动后&#xff0c;一些配置类、bean对象就自动存入到IOC容器中&#xff0c;不需要我们手动去声明&#xff0c;从而简化了开发&#xff0c;省去了繁琐的配置操作。 自动配置原理&#xff1a; 方案一…

MySQL——一、安装以及配置

MySQL 一、windows下的安装以及配置常规方法二、windows下的安装以及配置简单方法三、Linux下的数据库安装以及配置 一、windows下的安装以及配置常规方法 准备工具&#xff1a; 链接&#xff1a;https://pan.xunlei.com/s/VNeRbKScnTd6MbgZ-jwubY6-A1?pwdtaxz# 这里我准备的…

sync.Once-保证运行期间的某段代码只会执行一次

初入门径 sync.Once提供了保证某个操作只被执行一次的功能,其最常应用于单例模式之下,例如初始化系统配置、保持数据库唯一连接,以及并发访问只需要初始化一次的共享资源。 单例模式有懒汉模式和饿汉模式两种 饿汉模式 顾名思义就是比较饥饿&#xff0c;所以一上来(服务启动时)…

【看好了】如何使用fiddler实现手机抓包,Filters过滤器!

一、Fiddler与其他抓包工具的区别  1、Firebug虽然可以抓包&#xff0c;但是对于分析http请求的详细信息&#xff0c;不够强大。模拟http请求的功能也不够&#xff0c;且firebug常常是需要“无刷新修改”&#xff0c;如果刷新了页面&#xff0c;所有的修改都不会保存&#xff…

CDH集群部署

文章目录 1. 资源准备2. 部署 Mariadb 数据库3. 安装CM服务4. 安装数据节点5. 登录CM系统 1. 资源准备 准备好CDH安装包资源&#xff0c;官方网站下载需要账号&#xff0c;如果没有账号可以去网上到处搜搜。主要涉及到的资源有&#xff1a; cloudera-manager-servercloudera-m…

力扣:100. 相同的树(Python3)

题目&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣…

Mars3d插件参考开发教程并在相关页面引入

问题场景&#xff1a; 1.在使用Mars3d热力图功能时&#xff0c;提示mars3d.layer.HeatLayer is not a constructor 问题原因: 1.mars3d的热力图插件mars3d-heatmap没有安装引用。 解决方案&#xff1a; 1.参考开发教程&#xff0c;找到相关的插件库&#xff1a;Mars3D 三维…

【LeetCode-简答题】242. 有效的字母异位词

文章目录 题目方法一&#xff1a;数组存放&#xff1a;方法二&#xff1a;哈希存放 题目 方法一&#xff1a;数组存放&#xff1a; class Solution {public boolean isAnagram(String s, String t) {int[] s1 new int[26];int[] t1 new int[26];for(int i 0; i< s.lengt…

【LeetCode-简单题】350. 两个数组的交集 II

文章目录 题目方法一&#xff1a;哈希表方法二&#xff1a;双指针 题目 方法一&#xff1a;哈希表 用哈希表记录第一个数组的每个数和每个数的出现次数再遍历第二个数组&#xff0c;如果哈希表中有这个数&#xff0c;并且次数还不为0&#xff0c;说明是交集元素&#xff0c;加…

RocketMQ实践与原理分析(Docker安装RocketMQ)

前言 QBM之前使用的消息中间件是ActiveMQ&#xff0c;后续需要升级为RocketMQ。 MQ广泛应用于很多业务场景中&#xff0c;主要的作用 异步解耦削峰… 常用MQ中间件对比&#xff0c;参考官方文档&#xff1a;https://rocketmq.apache.org/zh/docs/4.x/introduction/03whatis…

Android查看公钥与MD5

参考&#xff1a;填写App特征信息_备案-阿里云帮助中心 安卓应用获取App特征信息指导 包名、公钥和签名MD5获取方式有多种&#xff0c;本文以使用JadxGUI工具获取为例。 下载JadxGUI工具&#xff1a;GitHub - skylot/jadx: Dex to Java decompiler下载安装完成后&#xff0c;使…

饲料添加剂 微生物 屎肠球菌

声明 本文是学习GB 7300.503-2023 饲料添加剂 第5部分&#xff1a;微生物 屎肠球菌. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了饲料添加剂屎肠球菌的技术要求、采样、检验规则、标签、包装、运输、贮存和保质 期&#xff0…

Routing路径系列数学建模(TSP+CVRP)

1.Traveling Salesperson Problem(TSP) 参考&#xff1a;维基百科TSP 给定一些城市和城市之间的距离&#xff0c;找到最短路径&#xff0c;经过每个城市最后返回起点&#xff0c;组合优化问题中属于NP-hard难度。对于TSP问题有两类混合整数规划模型&#xff1a;Miller–Tucker…

PYTHON-模拟练习题目集合

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

QScrollBar滚动条、QSlider滑块、 QDial表盘

QAbstractSlider 类、 QSCrollBar 类、 QSlider 类 一、 基本原理 1、 QAbstractSlider 继承自 QWidget&#xff0c;该类主要用于提供一个范围内的整数值&#xff0c; 2、 QAbstractSlider 类是 QScrollBar 类(滚动条)、 QSlider 类(滑块)、 QDial 类(表盘)的父类&#xff0c;因…

智能公厕大脑,提高城市公共厕所管理效率!

随着城市建设的不断发展&#xff0c;公共设施的完善也成为人们关注的重要问题之一。而城市公共厕所作为城市治理的一部分&#xff0c;管理效率和运营成本则直接关系到城市环境整体卫生和市民的生活质量。如何提高城市公共厕所管理能力和服务水平&#xff0c;成为城市治理和市民…

MQ的初步了解

目录 什么是MQ&#xff1f; 为什么要用MQ&#xff08;MQ的优点&#xff09;&#xff1f; MQ的缺点 常用的MQ产品 MQ使用中的常见问题 什么是MQ&#xff1f; 【1】MQ&#xff1a;MessageQueue&#xff0c;消息队列。 队列&#xff0c;是一种FIFO 先进先出的数据结构。消息由…

28335 GPIO作为输入的配置记录

28335 GPIO配置为输入&#xff0c;可以启动输入滤波功能&#xff0c;看了网上很多的讲解&#xff0c;把滤波配置记录一下&#xff1a; 主要是配置两个参数&#xff1a; GpioCtrlRegs.GPXCTRL.bit.QUALPRDX &#xff1a;用于配置采样的周期&#xff0c;由配置值和SYSCLKOUT共同…

Java面试题之——异常和错误

提示&#xff1a;解释Java中的异常和错误是什么&#xff0c;以及它们之间的区别是什么&#xff1f; 文章目录 前言从定义上来说&#xff1a;从处理方式来看&#xff1a;总结⭐️ 好书推荐 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 在Java编程语言…