当前位置: 首页 > news >正文

Mybatis_4

上篇文章我们讲了Mybatis使用动态sql选择性查询、更新、添加一些元素。本篇文章我们来使用<foreach>标签实现批量删除、<include>标签实现XML代码的复用,学会引入generator依赖来自动生成Mybatis的XML代码并对Mybatis_plus进行简单使用。

动态sql(续)

<foreach>标签

在我们使用mybatis操作数据库时,常常要涉及到批量操作,如:批量删除等。此时我们将集合作为参数进行传递,使用<foreach>对集合元素进行遍历。

Mapper:

Integer deleteByIds(List<Integer> ids);

XML: 

    <delete id="deleteByIds">delete from userinfo where id in<foreach collection="ids" open="(" close=")" item="id" separator=",">#{id}</foreach></delete>

测试(删除id为2、4、7的元素): 

 @Testvoid deleteByIds() {List<Integer> ids = Arrays.asList(new Integer[]{2,4,7});mapper.deleteByIds(ids);}

<foreach>标签详解: 

<include>标签 

在xml映射文件中配置的sql,有时可能会存在很多重复的片段,此时就会存在很多冗余的代码。

我们可以对重复的代码片段进行抽取有,将其通过<sql>标签封装成一个sql片段,然后通过<include>标签进行引用。

mapper:

List<Userinfo> get();

XML:

<sql id="elements">select id,username,age,gender,phone,delete_flag,create_time ,update_time from userinfo</sql><select id="get" resultType="com.example.mybatis.model.Userinfo"><include refid="elements"></include></select>

测试:

 @Testvoid get() {System.out.println(mapper.get());}

<include>标签详解:

MyBatis Generator

MyBatis Generator是一个为MyBatis框架设计的代码生成工具,它可以根据数据库表结构自动生成相应的JavaModel,Mapper接口以及对应的XML文件,简化数据访问层的编码工作,使得开发者可以更专注于业务逻辑的实现。

接下来我们看下,如何使用MyBatis Generator来生成代码

引入插件

            <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><configuration><!--generator配置⽂件所在位置--><configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency></dependencies></plugin>

注意插件配置的位置: 

添加generatorConfig.xml

文件路径和上述配置一致: 文件内容复制粘贴即可,不过里面有几处可以进行修改,后面会讲:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- 配置⽣成器 -->
<generatorConfiguration><!-- ⼀个数据库⼀个context --><context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat"><!--去除注释--><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true" /></commentGenerator><!--数据库链接信息--><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis_test?serverTimezone=Asia/Shanghai&amp;nullCatalogMeansCurrent=true"userId="root"password="5028"></jdbcConnection><!-- ⽣成实体类 --><javaModelGenerator targetPackage="com.example.demo.generator.model" targetProject="src/main/java" ><property name="enableSubPackages" value="false"/><property name="trimStrings" value="true"/></javaModelGenerator><!-- ⽣成mapxml⽂件 --><sqlMapGenerator targetPackage="mapperGenerator" targetProject="src/main/resources" ><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- ⽣成mapxml对应client,也就是接⼝dao --><javaClientGenerator targetPackage="com.example.demo.generator.mapper" targetProject="src/main/java" type="XMLMAPPER" ><property name="enableSubPackages" value="false" /></javaClientGenerator><!-- table可以有多个,每个数据库中的表都可以写⼀个table,tableName表示要匹配的数据库表,也可以在tableName属性中通过使⽤%通配符来匹配所有数据库表,只有匹配的表才会⾃动⽣成⽂件 --><table tableName="userinfo"><property name="useActualColumnNames" value="false" /><!-- 数据库表主键 --><generatedKey column="id" sqlStatement="Mysql" identity="true"/></table><table tableName="articleinfo"><property name="useActualColumnNames" value="false" /><!-- 数据库表主键 --><generatedKey column="id" sqlStatement="Mysql" identity="true"/></table></context>
</generatorConfiguration>

这里的爆红无需理会: 可修改的位置: 

配置完成之后点击这里: 自动生成的结果:

注意:

这个插件通常在项目初始化时使用,如果指定生成文件的目录,当前存在代码,则会覆盖之前的代码。 

MyBatis_Plus

官网:MyBatis-Plus 🚀 为简化开发而生 (baomidou.com) 

1、引入依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.5</version>
</dependency>

2、配置mysql

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&us
eSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver

这里数据库名和密码修改为所用的数据库和数据库的密码。 

3、编写数据库对应字段

@TableName("userinfo")
@Data
public class Userinfo {@TableId//标识主键private int id;@TableField("username")//参数映射private String username;private String password;private int age;private int gender;private String phone;private int deleteFlag;private Date createTime;private Date updateTime;
}

编写完这些之后我们的mapper类只需要继承BaseMapper就可以使用各种方法了:

@Mapper
public interface UserinfoMapper extends BaseMapper<Userinfo> {
}

从方法名也可以推断出这些方法的功能,这里就不多赘述了。 

http://www.xdnf.cn/news/1206109.html

相关文章:

  • Effective C++ 条款07:为多态基类声明virtual析构函数
  • 【esp32s3】7 - VSCode + PlatformIO + Arduino + 构建项目
  • 前端高级综合搜索组件 SearchBox 使用详解!
  • 学习dify:一个开源的 LLM 应用开发平台
  • C#_运算符重载 operator
  • 【kafka】消息队列
  • Java 数学工具类 Math
  • redis未授权getshell四种方式
  • Leetcode——11. 盛最多水的容器
  • 利用DataStream和TrafficPeak实现大数据可观察性
  • 【Git】Linux-ubuntu 22.04 初步认识 -> 安装 -> 基础操作
  • Prompt工程记录
  • MCU+RTOS调试
  • STM32启动流程
  • opencv 模块裁剪 按需安装指定模块
  • MCU 中的 PWM(脉冲宽度调制)是什么?
  • 未授权访问复现
  • Python动态规划:从基础到高阶优化的全面指南
  • 未授权访问漏洞靶场(redis,MongoDB,Memcached...)
  • Unity_UI_NGUI_锚点组件
  • 项目如何按时交付?重点关注的几点
  • 【Linux操作系统】简学深悟启示录:Linux环境基础开发工具使用
  • GoLand 项目从 0 到 1:第三天 —— 图数据库版本管理方案调研与中间件部署
  • Dify-14: 工作流API端点
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • STM32F4—电源管理器
  • YOLOv11改进:添加SCConv空间和通道重构卷积二次创新C3k2
  • 时间数字转换器TDC的FPGA方案及核心代码
  • 数分思维10:用户增长
  • 小智源码分析——音频部分(二)