202010-10 SpringBoot学习系列之MyBatis Plus整合封装的实例详解 前言MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发、提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现了单表的基础get、save(插入/更新)、list、page、delete接口,使用Vo去接收、传输数据,实体负责与数据库表映射。这样做的目的是与我们之前的那套jpa保持编码风格上的一致,当我们的通用接口不能满足要求时,应当先考虑使用MP的Service... 继续阅读 >
202010-09 MyBatis-plus+达梦数据库实现自动生成代码的示例 先说点什么mybatis-plus是一款增强版的mybatis,功能强大,可以很大程度的简化开发。然而达梦数据库比较小众,虽然官方说mybatis-plus支持达梦数据库,但是使用起来遇到了很多问题。这篇文章主要讲如何使用mybatis-plus访问达梦数据库,并使用逆向工程自动生成代码。=。=对了这是个使用springboot的项目。(配置)POM文件,引入所需要的依赖<dependencies><dependency><groupId>org.springframework.boot</groupId>... 继续阅读 >
202010-09 浅谈mybatis 乐观锁实现,解决并发问题 情景展示:银行两操作员同时操作同一账户就是典型的例子。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后提交。最后实际账户余额为1000-50=950元,但本该为1000+100-50=1050。这就是典型的并发问题。乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本(Version)记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本... 继续阅读 >
202010-09 MybatisPlus自定义Sql实现多表查询的示例 前言前段时间看同事的代码,发现他用Layui+MybatisPlus做分页查询做得很规整,认真看了下代码发现这种方式不仅适用于与Layui做分页查询,在任何时候需要多表联查的时候都可以用到。 以下以Layui分页查询作为参考,在实际应用中可以灵活使用。分页查询VO对象@Data@AllArgsConstructor@NoArgsConstructorpublicclassLayuiData{privateIntegercode=0;privateLongcount;privateStringmsg="ok";privateObjectda... 继续阅读 >
202010-09 MyBatis-Plus多表联合查询并且分页(3表联合) 这3张表的关系是模型表Model ===>训练表Training===》应用表Application(大概的逻辑是:选择应用,然后训练,然后成为模型)首先我们先建立实体Model(我使用的data注解不需要getset @TableField(exist=false)注解下的属性是相关联表的属性)packagecn.com.befery.dataai.po;importjava.util.Date;importorg.springframework.boot.jackson.JsonComponent;importcom.baomidou.mybatisplus.annotations.Tabl... 继续阅读 >
202010-09 MyBatis-Plus 如何实现连表查询的示例代码 在项目开发中,难免会遇到连表查询的操作。项目中用的是MyBatis-Plus,是新使用的框架。官方文档看这里。我写过一篇通过单元测试来验证MyBatis-Plus的CRUD操作。点这里跳转今天遇到连表查询的问题,特此记录一下。遇到需要连表操作,想起MyBatis的操作连表查询,要是MyBatis-Plus也像MyBatis一样,就脑壳痛了。(MyBatis-Plus是MyBatis的增强版)脑壳痛归脑壳痛,先动手干。首先因为官方的内置接口方法都是针对单表... 继续阅读 >
202010-09 MyBatis-Plus 如何实现连表查询的示例代码 在项目开发中,难免会遇到连表查询的操作。项目中用的是MyBatis-Plus,是新使用的框架。官方文档看这里。我写过一篇通过单元测试来验证MyBatis-Plus的CRUD操作。点这里跳转今天遇到连表查询的问题,特此记录一下。遇到需要连表操作,想起MyBatis的操作连表查询,要是MyBatis-Plus也像MyBatis一样,就脑壳痛了。(MyBatis-Plus是MyBatis的增强版)脑壳痛归脑壳痛,先动手干。首先因为官方的内置接口方法都是针对单表... 继续阅读 >
202010-09 JavaEE SpringMyBatis是什么? 它和Hibernate的区别及如何配置MyBatis MyBatisMyBatis是一个基于Java的持久层框架。MyBatis提供的持久层框架包括SQLMaps和DataAccessObjects(DAO),它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。目前,Java的持久层框架产品有许多,常见的有Hibernate和MyBatis。MyBatis和hibern... 继续阅读 >
202010-09 Mybatis Plus条件构造器ConditionConstructor用法实例解析 理解:原来叫条件构造器,我一直以为都是封装条件对象即SQL的查询条件,不过都一样。其目的是因为的实际的需求灵活多变,而我们的SQL的筛选条件也需要跟着变化,但是有一些固定的字段固定的方式可以保证不变化,那么方法的参数的确定尤为重要从单一的一个ID,一个String的属性,到一个类型的对象,最后到规范的接口就是逐渐把可能的情况不断的抽象化,更具有泛用意义Wrapper的常用方法:eq方法,名称是equals的缩写,两个参数,一... 继续阅读 >
202010-09 基于Mybatis Plus实现代码生成器CodeGenerator 导入生成器需要的依赖坐标:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.1</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.29</ve... 继续阅读 >
202010-09 MyBatis整合Redis实现二级缓存的示例代码 MyBatis框架提供了二级缓存接口,我们只需要实现它再开启配置就可以使用了。特别注意,我们要解决缓存穿透、缓存穿透和缓存雪崩的问题,同时也要保证缓存性能。具体实现说明,直接看代码注释吧!1、开启配置SpringBoot配置mybatis:configuration:cache-enabled:true2、Redis配置以及服务接口RedisConfig.javapackagecom.leven.mybatis.api.config;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterx... 继续阅读 >
202010-09 Spring boot整合mybatis实现过程图解 导入mybatisjar包右键pom.xml模拟springboot底层实现类1.定义接口@MapperpublicinterfaceGoodsDao{/***基于商品id删除商品*@paramid商品id*@return删除行数*数据层方法对象的sql映射*/@Delete("deletefromtb_goodswhereid=#{id}")//当传入的参数只有一个且不是数组时//#{id}这个地方的变量可以不是传入的参数名(自己随意)intdeleteById(Integerid);}测试@SpringBootTestpubli... 继续阅读 >
202010-09 使用Mybatis对数据库进行单表操作的实现示例 简介该篇文章主要是介绍如何使用MyBatis对Mysql数据库进行单表操作(对于mybatis的下载以及配置文件的作用和具体信息,我在上一篇文章中也已经提到了),使用的环境如下:JDK版本:1.8编译器:IDEA2019JDBC版本:8.0.18mybatis版本:3.5.3配置文件首先需要有两个配置文件,一个是configuration.xml文件,配置的是连接数据库的环境以及对于mapper.xml文件的映射,还有另一个文件就是mapper.xml,这个文件主要是用来写sql语... 继续阅读 >
202010-09 Mybatis plus中使用in查询出错如何解决 不想看我bb的直接点上面的‘'解决方法‘'我的情况是这样的,在使用mybatisplus提供的QueryWrapper方法里的in查询时,我的参数为类似“1,2,3,4”这样的字符串//要查的参数StringmasterIds="81554,5654,55948,48945";QueryWrapper<FpjyPauperInfo>pauperqw=newQueryWrapper<>();pauperqw.in("user_id",masterIds);UserInfoService.list(pauperqw);结果返回的数据与在数据库查出来的数据不一样(这是我的情况... 继续阅读 >
202010-09 Mybatis主配置文件的properties标签详解 我们配置MYSQL的连接池时可以直接写,也可以从外部导入配置文件。1、直接在dataSource中写数据库基本信息<dataSourcetype="POOLED"><!--配置连接数据库的4个基本信息--><propertyname="driver"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/mybatis"/><propertyname="username"value="root"/><propertyname="password"value="12345... 继续阅读 >
202010-09 MyBatis 三表外关联查询的实现(用户、角色、权限) 一、数据库结构二、查询所有数据记录(SQL语句)SQL语句:SELECTu.*,r.*,a.*FROM(((useruINNERJOINuser_roleurONur.user_id=u.user_id)INNERJOINrolerONr.role_id=ur.role_id)INNERJOINrole_authorityraONra.role_id=r.role_id)INNERJOINauthorityaONra.authority_id=a.authority_id三、详细代码(第一中方式)1、实体类entitypackagecn.lemon.demo.entity;importlombok.Data... 继续阅读 >