202012-02 详解mybatis @SelectProvider 注解 01、前言为什么会写这篇文章,因为在看到MapperAnnotationBuilder构造方法初始化时,发现了四个从未见过的注解publicMapperAnnotationBuilder(Configurationconfiguration,Class<?>type){...sqlAnnotationTypes.add(Select.class);sqlAnnotationTypes.add(Insert.class);sqlAnnotationTypes.add(Update.class);sqlAnnotationTypes.add(Delete.class);//这四个注解眼生的很sqlProviderAnnotationTypes.ad... 继续阅读 >
202012-02 解决mybatis 中collection嵌套collection引发的bug 我就废话不多说了,大家还是直接看代码吧~<resultMapid="ParentMap"type="org.example.mybatis.Parent"><idcolumn="Id"jdbcType="VARCHAR"property="id"/><resultcolumn="Name"jdbcType="VARCHAR"property="name"/><resultcolumn="SurName"jdbcType="VARCHAR"property="surName"/><collectionproperty="children"javaType="ArrayList"ofType="org.example.mybatis.Child"resultMap="ChildMap"co... 继续阅读 >
202012-02 Mybatis generator如何自动生成代码 开发项目的时候,表很多,是不可能一点点的自己去写xml,dao文件的,这里就需要用到代码的自动生成工具了。第一步:导入jar包,当然,这之前,基本环境,像mybatis,数据库之类的都得搭建好。<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency>第二步:创建启动的xml配置文件mybatis-generator-config.xml<... 继续阅读 >
202012-02 mybatis多层嵌套resultMap及返回自定义参数详解 1.两层嵌套,一个list中加另外一个listdata:[{a:123,b:456,c:[{d:7,e:8}]}]xml文件定义的sqlselect*fromzhyzLEFTJOINwlwonz.id=w.zidresultMap可以定义:<resultMapid="zhyResultMap"type="zhy的doman实体"extends="zhy自动生成的BaseResultMap"><collectionproperty="c"resultMap="wl自动生成的BaseResultMap"/></resultMap>如果测试表zhy与wl表中存在重复名称的字段可以使用columnPrefix注意w_selectz.*,w.b... 继续阅读 >
202012-02 mybatis 多表关联mapper文件写法操作 两张表SystemParam(系统参数表)Suit(主题)SystemParam与Suit是多对一Suit的higerSuit字段是Suit的父及主题id是多对一,需要自连接查询,因为重名所以父表sql字段加别名mapper方法SystemparamselectJoinSuit(Stringstrparamcode);Po类publicclassSystemparam{//ManyToOne"主题"privateSuitsuitobj;privateStringstrparamcode;privateStringstrenable;privateStringstrparamname;//suit表主键priva... 继续阅读 >
202012-02 Mybatis有查询结果但存不进实体类的解决方案 问题描述使用Mybatis查询得到实体类表定义如下成员ID成员姓名member_idmember_name对应的实体类如下publicclassMember{privateIntegermemberId;privateStringmemberName;//省略getter和setter}对应的Mapper.xml如下<selectid="selectMemberByMemberName"resultType="Member">SELECT*FROMmemberWHEREmember_name=#{memberName}</select>通过以下代码得... 继续阅读 >
202012-02 解决mybatis映射结果集失效的问题 在开发中可能会遇到这样的问题,使用mybatis进行结果集与实体类之间的关系映射时,可能会出现某些属性映射不上去的情况.为了方便排查问题我们需要查看mybatis访问数据库SQL信息。可以在配置Log4J:log4j.logger.com.xxx.dao=TRACElog4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUGlog4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUGlog4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUGl... 继续阅读 >
202012-02 mybatis plus in方法使用说明 如果是List类型的String,例如:List<String>这种类型的,就直接放值就可以了,本文讲的是当你查询到的是一个list集合如何遍历取值,否则要写sql和接口就显得很麻烦。步骤如下://查询到list集合List<User>userList=userService.selectById(id);//结果集List<String>resultList=newArrayList<>();//遍历集合取值userList.forEach(item->{resultList.add(item.getYouNeedId());});//条件构造器in上手使用QueryWrappe... 继续阅读 >
202012-02 解决MyBatis中为类配置别名,列名与属性名不对应的问题 在传参与接收返回结果的时候,咱们一直是使用的全限定名。但是MyBatis自己在使用很多类型的时候(如Integer,Boolean)却可以直接使用别名。那么,咱们自己的写的类能不能使用别名呢?可以。需要配置。mybatis配置文件:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!--完成一个mybatis-config.xml的文件-... 继续阅读 >
202012-02 在Mybatis @Select注解中实现拼写动态sql 现在随着mybatisplus的应用,越来越多的弱化了SQL语句,对于单表操作可以说几乎不需要进行自己编写SQL语句了,但对于多表查询操作目前mybatisplus还没有很好的支持,还需要自己编写SQL语句,如:importjava.util.List;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Param;importorg.apache.ibatis.annotations.Select;importcom.baomidou.mybatisplus.mapper.BaseMapper;importcom.s... 继续阅读 >
202012-02 Mybatis plus逻辑删除失败的BUG操作 开发调试的时候发现MybatisPlus的逻辑删除失效了,看了下配置文件发现没有问题,通过查看以下源码发现逻辑删除需要注入的bean,查看这个bean的源码如下查看其中一个实例的类的源码,如通过ID逻辑删除LogicDeleteById的源码,如下mp在项目启动时预加载SQL是通过TableInfo中logicDelete字段判断是否开启逻辑删除的。然后让我们来看看mp内部是如何判断是否开启逻辑删除的。先看如下源码大概就是讲实体类中的字段进行循环映射数据库字... 继续阅读 >
202012-02 Spring Boot环境下Mybatis Plus的快速应用操作 一、简介Mybatis-Plus(简称MP)是一个Mybatis的一个增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。其愿景是成为Mybatis最好的搭档,将开发效率翻倍,由于受到学习研究深入限制,本例只进行MybatisPlus在SpringBoot环境下的基本应用(如Select、Insert、Update、Delete等基本操作,其中还包括动态生成组合查询与更新的动态SQL语句)。特性:无侵入:Mybatis-Plus在Mybatis的基础上进行扩展,... 继续阅读 >
202012-02 解决mybatis批量更新(update foreach)失败的问题 如下所示:<!--批量更新报表--><updateid="updateIssueByBatch"parameterType="java.util.List"><foreachcollection="issueList"item="item"index="index"separator=";">updatesys_issue<set><iftest="item.first!=nullanditem.first!=''">first_class=#{item.first},</if><iftest="item.second!=nullanditem.second!=''">second_class=#{item.second},</if>updated_time=now... 继续阅读 >
202012-02 解决mybatis plus 一对多分页查询问题 最近用mybatisplus做项目,单表的增删改查都正常,做到1对多表的分页时,用resultMap返回的时候发现返回的记录和总数对不上返回的记录是一表的,二返回的总数是多表查了一下,这个或者是PLUS的bug大概的解决办法如下图:用collection,传参用column,我这里用了一个小技巧,把外面传入的参数,作为主表的column传入到从表。这里没找到其他方法,有其他方法可以评论告诉我补充知识:解决Mybatis-plus利用collection查询一对多... 继续阅读 >
202012-02 解决mybatis plus 分页查询有条数,total和pages都是零的问题 一.问题还原1.Controller代码部分Page<FixedAssetsEntity>pageForPlus=getPage();Page<FixedAssetsEntity>fixedAssetsEntityPage=fixedAssetsService.selectPage(pageForPlus);2.spring-mybatis.xml中的sqlSessionFactory配置<beanid="sqlSessionFactory"class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"><!--配置数据源--><propertyname="dataSource"ref="dataSource"/><!--自动... 继续阅读 >
202011-29 mybatis的使用-Mapper文件各种语法介绍 一、查询mybatis自定义查询条件,queryString、queryMap、limit,Mapper文件写法如下:<selectid="getByQueryParam"parameterType="com.systom.base.BaseDaoQueryParam"resultMap="BaseResultMap">SELECT*FROMuserWHERE1=1<iftest="paramString!=null">and${paramString}</if><foreachcollection="paramMap.keys"item="k"separator=""><iftest="null!=paramMap[k]">and${k}=#{paramMap.${k}}... 继续阅读 >