202102-23 MyBatis 实现数据的批量新增和删除的操作 在项目的开发中,我们经常需要对数据进行批量的操作,如:批量新增、批量删除等。下面将介绍MyBatis如何实现数据的批量新增和删除操作。创建UserMapper接口(用户信息Mapper动态代理接口),实现用户信息的批量新增、批量删除、批量查询。packagecom.pjb.mapper;importcom.pjb.entity.UserInfo;importorg.apache.ibatis.annotations.Delete;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations... 继续阅读 >
202102-21 mybatis查询字段为null设置为0的操作 背景使用mybatis查询(mysql)时,会使用多个double字段做相加,但是呢,其中几个字段有可能是null,会抛空指针。解决方法自动生成的mybatismapper文件长这样<sqlid="Base_Column_List">ID,PREPAYMENT_FEE</sql>修改它<sqlid="Base_Column_List">ID,ifnull(PREPAYMENT_FEE,0)asPREPAYMENT_FEE</sql>补充:mybatis中0和null关系处理最近在项目开发中,mybatis遇到一个很奇怪的问题,因为想在后台传一个int型0插入到数据,... 继续阅读 >
202102-21 解决mybatis plus字段为null或空字符串无法保存到数据库的问题 背景项目中集成了mybatisplus,今天在做后台的一个常规的增删改查时,发现字段值为null时,这个字段不会被保存到数据库解决办法在字段上加上@TableField(strategy=FieldStrategy.IGNORED)strategy字段更新插入策略属性说明:IGNORED(0):“忽略判断”,所有字段都更新和插入NOT_NULL(1):“非NULL判断”,只更新和插入非NULL值NOT_EMPTY(2):“非空判断”,只更新和插入非NULL值且非空字符串另外一种方式可全局配置,未亲手实... 继续阅读 >
202102-21 基于mybatis中<include>标签的作用说明 MyBatis中sql标签定义SQL片段,include标签引用,可以复用SQL片段sql标签中id属性对应include标签中的refid属性。通过include标签将sql片段和原sql片段进行拼接成一个完整的sql语句进行执行。<sqlid="sqlid">res_type_id,res_type</sql><selectid="selectbyId"resultType="com.property.vo.PubResTypeVO">select<includerefid="sqlid"/>frompub_res_type</select>引用同一个xml中的sql片段<includerefid="sqlid"/>引... 继续阅读 >
202102-21 IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能 一、搭建SpringBoot项目1.1、file——>new——>project——>SpringInitializr——>next——>next——>next——>finish注意选择包依赖关系二、springboot整合mybatis.mysql2.1、整体结构2.2、设置所需要的依赖即pom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.... 继续阅读 >
202102-21 MyBatis Generator的简单使用方法示例 添加配置文件在项目resource目录下创建mybatis-generator文件夹在文件夹下创建generatorConfig.xml,配置需要生成代码的数据表<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><propertiesresource="mybatis-generator/generator... 继续阅读 >
202102-21 MyBatis不用@Param传递多个参数的操作 背景假设我们要保存一个小狗的信息到数据库中通常的做法我们在使用mybatis接口和xml对应的时候,常常是这样写的:接口publicinterfaceDogDao{voidsave(@Param("dogName")StringdogName,@Param("age")intage);}xml<insertid="save">INSERTINTOdogvalues(null,#{dogName},#{age});</insert>因为mybatis在执行的之后动态生成实现类,而在java中使用反射会将方法中的参数名称擦除,所以如果在xml中要接收到规定... 继续阅读 >
202102-21 解决MyBatis @param注解参数类型错误异常的问题 问题现象今天使用mybatis遇到个很奇怪的问题,我使用一个参数@param("threshold"),类型是java的double,但是很奇怪,一直告诉我参数转换错误,int不能转double,我就奇怪了,哪里来的int。解决办法我感觉可能使用用到了mybatis的关键字,所以就把threshold换了个名字,果然好了。问题原因某些关键词,mybatis会认为是某种类型,下面列出来一些,后面发现再补充。size,threshold,modCount是int类型loadFactor是float类型补充:... 继续阅读 >
202102-21 mybatis if标签判断不生效的解决方法 实际需求<iftest="computationRule=='1'">FROMapp_sz_bbba</if><iftest="computationRule=='2'">FROMapp_ccca</if>这种情况不生效,原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'0'会被解析成字符,java是强类型的,char和一个string会导致不等,所以if标签中的sql不会被解析。先说怎么解决三种:加.toString()<iftest="computationRule=='1'.toString()">FROMapp_sz_bbba</if><iftest="co... 继续阅读 >
202102-20 MyBatis中如何接收String类型的参数实现 在MyBatis学习初期,当parameterType的值为String<==>也就是接收String类型的参数时,我会通过value来接,如图:通过value接收String类型的值舒适又简单,然而,直到有一天,我发现屡试不爽的value不给力了—>接收String类型值的时候出了问题。到底是什么凶残吓到了我的value—>就是<bind/>标签,大家请看:这是配套数据表查出来的结果让我很费解,用value接收值的时候出了这个问题(好好的”GZ“接收过来变成了C@a7e666)后来通... 继续阅读 >
202102-20 mybatis 查询sql中in条件用法详解(foreach) foreach属性主要有item,index,collection,open,separator,close1、item表示集合中每一个元素进行迭代时的别名,2、index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,3、open表示该语句以什么开始,4、separator表示在每次进行迭代之间以什么符号作为分隔符,5、close表示以什么结束,6、collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况:a、如果传入的是单参数... 继续阅读 >
202102-20 mybatis的动态sql之if test的使用说明 参数为String,iftest读取该参数代码<selectid="getMaxDepartId"parameterType="java.lang.String"resultType="java.lang.String">SELECTMAX(DEPART_ID)FROMT_P_DEPART<where><iftest="_parameter!=nulland_parameter!=''">ANDDEPART_PID=#{departId,jdbcType=VARCHAR}</if><iftest="_parameter==nullor_parameter==''">ANDDEPART_PIDISNULL</if></wh... 继续阅读 >
202102-20 Mybatis 中如何判断集合的size Mybatis中判断集合的size,可以用下面的方法来做。<iftest="null!=staffCodeListandstaffCodeList.size>0">andgui.USER_CODEnotin<foreachcollection="staffCodeList"item="staffCode"open="("separator=","close=")">#{staffCode}</foreach></if>补充:警惕,MyBatis的size()方法竟然有坑!Mybatis是一个开源的轻量级半自动化ORM框架,使得面向对象应用程序与关系数据库的映射变得更加容易。MyBatis使用xml描述符或... 继续阅读 >
202102-20 解决mybatis case when 报错的问题 在mybatis中使用casewhen进行条件筛选判断时遇到Failedtoprocess,pleaseexcludethetableNameorstatementId.这样的报错信息,报错的信息是语法错误但是我在mysql的命令行中运行sql语句是没问题的//我的casewhen语句WHEREdept.type=1AND(CASEagent.dept_typeWHEN"agent"THENdept.id=30END)//当agent的dept_type为"agent"时,将添加dept.id=30的判断这段sql语句在命令行内运行没问题但是放到mybatis上执行就会报... 继续阅读 >
202102-20 在mybatis 中使用if else 进行判断的操作 我就废话不多说了,大家还是直接看代码吧~<!--查询物品的id--><selectid="checkItemsId"parameterType="pd"resultType="java.lang.Integer">SELECTi.itemsidFROMpq_goods_itemsi<where><!--方式一使用choose的方式查询--><!--<choose><whentest="parentId!=0">parentTypeId=#{parentId}</when><whentest="parentId==0">parentTypeIdisnull</when></choose>--><!--方式二使用... 继续阅读 >
202102-20 解决mybatis where-if中if不能识别大写AND,OR的问题 mybatis报错:Causedby:org.apache.ibatis.ognl.ParseException:Encountered""AND“”atline1错误代码:<selectid="selectAccountList"resultMap="BaseResultMap">SELECTct.customer_namecustomerName,sam.city_code,sam.user_name,sam.account_nameFROMsys_account_managersamLEFTJOINsys_customerctONct.id=sam.customer_idWHEREsam.deleted=0<iftest="customerName!=nullANDcustomerNam... 继续阅读 >