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

SSM(MybatisPlus)

入门案例

MybatisPlus(mp)是基于Mybatis框架基础上开发的增强型工具

1、创建新模块,选择spring初始化,并配置模块相关基础信息

2、选择myspl driver依赖

3、手动添加mp依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency>

4、设置jdbc参数(application.yml)

5、制作实体类与表结构(类名与表名对应,属性名与字段对应)
如果不对应使用@TableName()绑定

@TableName("tbl_book")
public class Book {}

6、定义数据接口,继承BaseMapper

@Mapper
public interface BookDao extends BaseMapper<Book> {
}

分页查询实现

1、设置分页拦截器作为Spring管理的bean

    @Beanpublic MybatisPlusInterceptor pageInterceptor(){MybatisPlusInterceptor pageInterceptor =new MybatisPlusInterceptor();pageInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return pageInterceptor;}

2、封装数据的对象:IPage

  @Testpublic void testPage(){IPage page=new Page(1,3);bookDao.selectPage(page, null);System.out.println(page.getRecords());}

DQL编程控制

查询

条件查询-设置查询条件

格式一:常规格式

QueryWrapper qw=new QueryWrapper();qw.lt("id",3);qw.ge("id",1);List<Book> list=bookDao.selectList(qw);System.out.println(list);

格式二:链式编程格式

QueryWrapper<Book> qw=new QueryWrapper();qw.lt("id",3).ge("id",1);List<Book> list=bookDao.selectList(qw);System.out.println(list);

格式三:lambda格式(推荐)

        QueryWrapper<Book> qw=new QueryWrapper();qw.lambda().lt(Book::getId,3).ge(Book::getId,1);List<Book> list=bookDao.selectList(qw);System.out.println(list);

格式四:lambda格式(推荐)

        LambdaQueryWrapper<Book> qw=new LambdaQueryWrapper();qw.lt(Book::getId,3).ge(Book::getId,1);List<Book> list=bookDao.selectList(qw);System.out.println(list);

条件查询-组合查询条件

and:直接连着写
or:条件之间加 .or()

条件查询-null值处理

条件参数控制

 //模拟前端的数据Book book=new Book();book.setId(3);LambdaQueryWrapper<Book> qw=new LambdaQueryWrapper();qw.lt(book.getId()!=null,Book::getId,3).ge(Book::getId,1);List<Book> list=bookDao.selectList(qw);System.out.println(list);

查询投影:
查询结果包含模型类中部分属性

       LambdaQueryWrapper<Book> qw=new LambdaQueryWrapper();qw.select(Book::getId,Book::getName);List<Book> list=bookDao.selectList(qw);System.out.println(list);

查询结果包含模型中未定义的属性

QueryWrapper<Book> qw=new QueryWrapper();qw.select("count(*) as count");List<Map<String, Object>> list=bookDao.selectMaps(qw);System.out.println(list);

感觉就是用java代码写SQL,条件有很多,需要了去查文档

字段映射与表映射

@TableField
位于类属性上方

相关属性:
value:设置数据库字段名称
exist:设置属性在数据库表中是否存在(默认true)
select:设置属性是否参与查询

@TableName
位于类上

绑定数据库表

增删改

id生成策略控制:
AUTO(0):使用数据库id自增策略控制id生成
NONE(1):不设置id生成策略
INPUT(2):用户手工输入id
ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)
ASSIGN_UUID(4):以UUID生成算法作为id生成策略

如果有些东西多处要用到,可以在yml配置文件中,设置全局配置(具体看文档)

逻辑删除

1、数据库表中添加逻辑删除标记字段(deleted)

2、实体类中添加对应字段,并设定当前字段为逻辑删除标记字段(@TableLogic)

另一个方法:

配置逻辑删除字面值(yml)

注意:一但启用删除是更新标记字段、查询只会查到没被删除字段

乐观锁

1、数据库表中添加锁标记字段
2、实体类中添加对应字段,并设定当前字段为乐观锁字段(@Version)
3、配置乐观锁拦截器实现锁机制对应的动态SQL语句拼装

pageInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

4、使用乐观锁机制在修改前必须先获取对应数据的version方可正常运行

http://www.dtcms.com/a/410419.html

相关文章:

  • Qt线程的两种使用方式
  • 怎么自己做礼品网站企业培训课程分类
  • 在 openEuler 上排查 Docker 同桥网络不通:从“全线超时”到定位容器没启动
  • vector深度求索(上)实用篇
  • 筛选选功能形网站建设东营网站设计
  • 创建一个网站的英文wordpress 版本查询
  • DevEco Studio 编辑器的使用
  • VSCode中Python库识别的设置(关于解决VSCode中Python库引入未下载的库不显示黄色虚线的问题)
  • 网站你懂我意思正能量app阿里云Windows建立WordPress
  • K8s学习笔记(八) K8s资源对象
  • 医疗数据集成的挑战,iPaaS 如何保障隐私与安全?
  • 【金仓数据库产品体验官】Windows 安装 KingbaseES V9R1C10 与 Oracle 兼容特性实战
  • 阿里云建站流程集约化网站建设
  • Classic McEliece:后量子密码的“元老”与NIST标准化的启示
  • 【论健康】健康的不可能三角
  • 19C数据库提示ORA-65096: 公用用户名或角色名无效(详细操作版)
  • 软考中级习题与解答——第十三章_数据库分析与设计(2)
  • tomcat升级操作
  • 广州高端品牌网站建设后台管理便捷蜜雪冰城推广软文
  • 基于 SpringBoot+Logicflow 的轻流程任务执行
  • 基础组合计数(三道例题)
  • ShardingSphere 与分库分表:分布式数据库中间件实战指南
  • 《三重AI协作交易系统:从技术债泥潭到毫秒级响应的实战笔记》
  • AI 赋能楼宇自控 DDC 系统:重构智慧建筑的核心引擎
  • 更改wordpress密码上海关键词优化排名哪家好
  • 最好的设计师网站wordpress 实例
  • IDEA 实现SpringBoot热部署(HotSwap和DevTools混用)
  • 《IDEA 2025 长效使用指南:2099 年有效期配置实战之JetBrains全家桶有效》​
  • IntelliJ IDEA / Android Studio 里直接跑 Cursor(不用来回切窗口)
  • HarmonyOS应用前后台状态切换