怎么提升网站打开速度,生意宝做网站行吗,网站app软件大全免费,什么是网站外链前言 #x1f31f;#x1f31f;本期讲解关于mybatis中SQL自动生成的相关知识介绍~~~ #x1f308;感兴趣的小伙伴看一看小编主页#xff1a;GGBondlctrl-CSDN博客 #x1f525; 你的点赞就是小编不断更新的最大动力 #x1f386;… 前言 本期讲解关于mybatis中SQL自动生成的相关知识介绍~~~ 感兴趣的小伙伴看一看小编主页GGBondlctrl-CSDN博客 你的点赞就是小编不断更新的最大动力 那么废话不多说直接开整吧~ 目录
️1.Mybatis-plus快速入门
1.1简介
1.2构建数据库
1.3引入mybatis-plus
1.3.1引入依赖
1.3.2构造mapper
1.3.3实体类
1.4操作数据库
1.4.1主键方式
1.4.2条件构造
️2.MybatisGenerator实现
2.1引入插件
2.2生成代码xml
️3.总结 ———小编一直以为已经写过这篇文章了但是结果在使用的时候回看小编写的博客哎呀没有写于是就想将这里的两种自动生成的方法讲解给大家听一听希望对大家有帮助
️1.Mybatis-plus快速入门
1.1简介
MyBatis-Plus 是一个 MyBatis 的增强工具在 MyBatis 的基础上只做增强不做改变为简化开发、提高效率而生。
特性 无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑损耗小启动即会自动注入基本 CURD性能基本无损耗直接面向对象操作强大的 CRUD 操作内置通用 Mapper、通用 Service仅仅通过少量配置即可实现单表大部分 CRUD 操作更有强大的条件构造器满足各类使用需求支持 Lambda 形式调用通过 Lambda 表达式方便的编写各类查询条件无需再担心字段写错支持主键自动生成支持多达 4 种主键策略内含分布式唯一 ID 生成器 - Sequence可自由配置完美解决主键问题支持 ActiveRecord 模式支持 ActiveRecord 形式调用实体类只需继承 Model 类即可进行强大的 CRUD 操作支持自定义全局通用操作支持全局通用方法注入 Write once, use anywhere 内置代码生成器采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码支持模板引擎更有超多自定义配置等您来使用内置分页插件基于 MyBatis 物理分页开发者无需关心具体操作配置好插件之后写分页等同于普通 List 查询分页插件支持多种数据库支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库内置性能分析插件可输出 SQL 语句以及其执行时间建议开发测试时启用该功能能快速揪出慢查询内置全局拦截插件提供全表 delete 、 update 操作智能分析阻断也可自定义拦截规则预防误操作 总结就是 功能非常强大适用多种场景的SQL语句需求以及支持多种数据库的操作 具体的文章大家可以去看看官网 简介 | MyBatis-Plus 1.2构建数据库
小编这里使用的就是navicat进行数据库的创建的具体格式如下所示 ok注意了这里的id一定要设置成主键的形式这里后面在映射时起到关键作用
1.3引入mybatis-plus
1.3.1引入依赖
这里的Spring boot 2引入如下依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.10.1/version
/dependency
Spring boot 3引入如下的依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.10.1/version
/dependency
1.3.2构造mapper
代码如下所示
Mapper
public interface EmployerMapper extends BaseMapperEmployer {
}
解释这里我们定义的mapper层的类去继承我们BaseMapperEmployerBaseMapperT用于快速实现单表的基本 CRUD创建、读取、更新、删除操作这里的泛型主要我们需要操作的实体类
1.3.3实体类
这里的实体类最主要的区别就是添加了映射的表名
Data
TableName(employer)
public class Employer {private Integer id;private String empname;private String sex;private Date birthday;private String phone;private String email;private String xueli;private String department;private String job;private Date jobtime;private String status;}
告诉我们这里对应的是那个表那么此时我们就可以在service层进行增删改查的操作了
1.4操作数据库
1.4.1主键方式
小编这里为了方便只实现删除以及查询的操作
根据id进行删除代码如下 Overridepublic AppResult delete(Integer id) {try {int num employerMapper.deleteById(id);if(num 0){return AppResult.success(删除数据成功,null);}else {return AppResult.fail(删除数据失败,ResultCode.FAIL.getCode());}}catch (Exception e){return AppResult.fail(数据异常,ResultCode.FAIL.getCode());}}
这里主要就算是方法deleteById的操作可以看到直接使用这里的方法既可以实现数据根据id进行删除但是这里的删除是根据主键进行删除的我们这里id #{ }内的参数默认是主键列 但是如果我们没有设置id主键甚至没有这个id列。那么如何指定id进行删除操作呢 如下数据库 这里小编就忘记设置这里的id了
这里就可以在实体类中进行规定
Data
TableName(archive)
public class Archive {//文档编号TableId(value archive_number, type IdType.INPUT)private String archiveNumber;// 员工编号private String employeeNumber;// 档案名称private String archiveName;// 内容摘要private String contentSummary;// 备注private String remark;
}
这里就是映射对应的数据库列然后设置其为主键
进行修改操作 Overridepublic AppResult update(Archive archive) {int row archiveMapper.updateById(archive);if(row ! 1){return AppResult.fail(更新数据失败,null);}else{return AppResult.success(更新数据成功, null);}} 那么这里小编直接设置控制层的参数为对象直接在postman中进行测试操作 这里修改的代码SQL语句大概就是 update archive set archive_name 赵六的文档 where archive_number 1004; 可以发现不仅解决的id主键的问题并且小编发现对于所有的增删改查几乎都是满足动态SQL的情况编写
1.4.2条件构造
那么对于查询来说我们可以根据id那么是否还可以根据其他方式进行呢
代码如下所示 Overridepublic AppResult select(EmployerDto dto) {//条件构造器QueryWrapperEmployer wrapper new QueryWrapper();//定义布尔值判断是否输入了员工姓名boolean condition null!dto.getEmpName()!dto.getEmpName().equals();wrapper.likeRight(condition,empName,dto.getEmpName());boolean condition1 null!dto.getSex()!dto.getSex().equals();wrapper.eq(condition1,sex,dto.getSex());ListEmployer list employerMapper.selectList(wrapper);if(list.size() 0){return AppResult.success(查询到数据,list);}else {return AppResult.fail(没有数据查询,null);}}
1. 首先设置一个条件构造器
2.我们在判断condition转态的时候这里如果为空或者没有长度那么为false后就直接表示这个条件没有
3.likeRight代表就是模糊查询中的右模糊查询“empName”就是映射数据库字段dto.getEmpName就是我们传递的参数
大致就是 SELECT * FROM employer WHERE empName LIKE 张三%; 4.下面的eq就是 符号大致的SQL语句就是 SELECT * FROM employer WHERE sex 男 ️2.MybatisGenerator实现
2.1引入插件
如下所示 plugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.3.5/versionconfiguration!--generator配置⽂件所在位置--configurationFilesrc/main/resources/mybatis/generatorConfig.xml/configurationFileoverwritetrue/overwriteverbosetrue/verbose/configurationdependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency/dependencies/plugin这里的mysql中的8.0.33来说小编使用的mysql是5.的版本好像也是可以使用的~~
2.2生成代码xml
这里生成代码的位置是根据上述插件中的 configurationFilesrc/main/resources/mybatis/generatorConfig.xml/configurationFile
进行路径的配置的很明显就是在resourcs下的mybatis包下生成的xml文件
如下所示
?xml version1.0 encodingUTF-8?
!DOCTYPE generatorConfigurationPUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtdgeneratorConfigurationcontext idDB2Tables targetRuntimeMyBatis3!-- 禁用自动生成的注释 --commentGeneratorproperty namesuppressAllComments valuetrue/property namesuppressDate valuetrue//commentGenerator!-- 连接配置 --jdbcConnection driverClasscom.mysql.jdbc.DriverconnectionURLjdbc:mysql://127.0.0.1:3306/forum_db?characterEncodingutf8amp;useSSLfalseuserIdrootpassword642364/jdbcConnectionjavaTypeResolver!-- 小数统一转为BigDecimal --property nameforceBigDecimals valuefalse//javaTypeResolver!-- 实体类生成位置 --javaModelGenerator targetPackagecom.example.forum.model targetProjectsrc/main/javaproperty nameenableSubPackages valuetrue/property nametrimStrings valuetrue//javaModelGenerator!-- mapper.xml生成位置 --sqlMapGenerator targetPackagemapper targetProjectsrc/main/resourcesproperty nameenableSubPackages valuetrue//sqlMapGenerator!-- DAO类生成位置 --javaClientGenerator typeXMLMAPPER targetPackagecom.example.forum.mapper targetProjectsrc/main/javaproperty nameenableSubPackages valuetrue//javaClientGenerator!-- 配置生成表与实例, 只需要修改表名tableName, 与对应类名domainObjectName 即可--table tableNamet_article domainObjectNameArticle enableSelectByExamplefalseenableDeleteByExamplefalse enableDeleteByPrimaryKeyfalse enableCountByExamplefalseenableUpdateByExamplefalse!-- 类的属性用数据库中的真实字段名做为属性名, 不指定这个属性会自动转换 _ 为驼峰命名规则--property nameuseActualColumnNames valuetrue//table/context
/generatorConfiguration
然后注意了这里面的表名即table标签中的第一个对应数据库字段第二个对应java字段
以及实体类DAO类还有对于mapper包下生成xml的文件位置要进行配置好
最后就是数据库的连接对应的密码以及root不要弄错了
最后点击如下所示 那么就可以直接在对应的包类下生成文件了这里的生成代码还是动态SQL哦~~~~
️3.总结
本期主要讲解了关于mybatis-plus的简单使用以及MybatisGenerator对于SQL实体类,DAO层的代码自动实现希望对大家有帮助~~~
~~~~最后希望与诸君共勉共同进步 以上就是本期内容了 感兴趣的话就关注小编吧。 期待你的关注~~~