草庐IT

MyBatis的使用、Spring AOP、Spring事务

一、MyBatis的使用1、环境配置1.1、建库建表--创建数据库dropdatabaseifexistsmycnblog;createdatabasemycnblogDEFAULTCHARACTERSETutf8mb4;--使⽤数据数据usemycnblog;--创建表[⽤户表]droptableifexistsuserinfo;createtableuserinfo(idintprimarykeyauto_increment,usernamevarchar(100)notnull,passwordvarchar(32)notnull,photovarchar(500)default'',c

MyBatis-Plus 更新(update)方法,属性参数为空时进行更新与不进行更新的设置

场景:项目整合了mybatisplus,进行update更新,前端传值为空时,数据库也进行了更新UpdateWrapperupdateWrapper=newUpdateWrapper();updateWrapper.eq("shop_id",goodsInfo.getShopId());updateWrapper.eq("goods_id",goodsInfo.getGoodsId());//获取修改之前的数据MapoldValue=iShopGoodsService.getOneOfShopGoods(goodsInfo);booleanupdate=iShopGoodsService.up

mybatis警告: No MyBatis mapper was found in ‘[com.**]‘ package. Please check your configuration.

出现的错误No MyBatis mapperwasfound  解决办法: 在你的启动类上加上MapperScan注解,里面写上你的dao目录,如果存在多个可以使用*号代替,或者在中括号中使用逗号隔开写多个比如: 使用mybatis的话需要在application.yml或application.peoperties文件里使其项目加载的时候加载到mybatis配置文件 

Mybatis之批量更新数据(批量update)

前言当我们使用mybatis的时候,可能经常会碰到一批数据的批量更新问题,因为如果一条数据一更新,那每一条数据就需要涉及到一次数据库的操作,包括网络IO以及磁盘IO,可想而知,这个效率是非常低下的。而平时我们很少直接使用原生jdbc直接操作数据库,而是会使用比较成熟的ORM框架,那么今天我们就来总结一下,如何使用mybatis做批量更新。方案一(个人推荐)在mybatis的xml文件中,使用foreach动态标签拼接SQL语句,每一条数据的更新语句对应一条update语句,多条语句最终使用";"号进行拼接。updateid="updateBatchById">foreachcollection

Mybatis-plus apply函数使用

Mybatis-plusapply函数使用一、前言二、业务场景1、自定义时间查询一、前言Mybatis-plus里面的apply方法是用于拼接自定义的条件判断,二、业务场景1、自定义时间查询根据传进来的开始日期,查询所有该日期是数据,但是数据库中保存是时间,所以需要使用apply查询方式并格式化。@OverridepublicListQuestionnairePush>queryBaseCountByYearOrMonth(PaperRecycleStatisfactionQueryDTOpaperRecycleStatisfactionQueryDTO,Integerstate){Lambd

一个简单的前后端交互——登录注册页面(升级版)idea代码篇(2:Maven:Javaweb项目)使用MyBatis:Mapper,servlet+Tomcat

前言:本篇前后端交互实现代码。详细项目搭建见上篇先贴一张登录界面和包结构: 一、代码:1.MapperpublicinterfaceUserMapper{/***根据用户名和密码查询用户对象*@paramusername*@parampassword*@return*/@Select("select*fromtb_userwhereusername=#{username}andpassword=#{password}")Userselect(@Param("username")Stringusername,@Param("password")Stringpassword);/***根据用户名查

使用mybatis进行数据插入时如何返回自增的id

如何解决问题具体问题解决办法注意点具体问题当我们存储数据时,有时候id是选择让数据库自增的。但前端如果需要当前添加数据的id时,我们在代码上就无法返回了。解决办法在MyBatis中,可以通过配置来确保数据库操作成功。具体方式是在Mapper.xml文件中使用useGeneratedKeys和keyProperty属性来获取自增主键的值,以判断插入操作是否成功。下面是实现方法:1、在Mapper.xml中的插入操作中,添加useGeneratedKeys和keyProperty属性。insertid="insertUser"parameterType="com.example.User"useG

Mybatis-Plus之四种lambda方式LambdaQueryWrapper,QueryWrapper<实体>().lambda(),LambdaQueryChainWrapper<实体>

Mybatis-Plus之四种lambda方式lambda四种表达形式前言使用了lambda表达式可以通过方法引用的方式来使用实体字段名的操作,避免直接写数据库表字段名时的错写名字;一、LambdaQueryWrapper/***lambda条件构造器*生成的sql语句SELECTid,name,age,email,manager_id,create_timeFROMuserWHEREnameLIKE?ANDage@TestpublicvoidselectLambda(){//创建lambda条件构造器的三种方法//LambdaQueryWrapperlambda2=newLambdaQuer

Mybatis-Plus之四种lambda方式LambdaQueryWrapper,QueryWrapper<实体>().lambda(),LambdaQueryChainWrapper<实体>

Mybatis-Plus之四种lambda方式lambda四种表达形式前言使用了lambda表达式可以通过方法引用的方式来使用实体字段名的操作,避免直接写数据库表字段名时的错写名字;一、LambdaQueryWrapper/***lambda条件构造器*生成的sql语句SELECTid,name,age,email,manager_id,create_timeFROMuserWHEREnameLIKE?ANDage@TestpublicvoidselectLambda(){//创建lambda条件构造器的三种方法//LambdaQueryWrapperlambda2=newLambdaQuer

Mybatis流式游标查询-大数据DB查询OOM查询问题

问题场景Mysql数据处理类型分以下三种com.mysql.cj.protocol.a.result.ResultsetRowsStatic:普通查询,将结果集一次性全部拉取到内存com.mysql.cj.protocol.a.result.ResultsetRowsCursor:游标查询,将结果集分批拉取到内存,按照fetchSize大小拉取,会占用当前连接直到连接关闭。在mysql那边会建立一个临时表写入磁盘(查询结束后由mysql回收处理),会导致mysqlserver磁盘io飙升。com.mysql.cj.protocol.a.result.ResultsetRowsStreaming