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

深圳外贸英文网站设计公司哪家好电子商务电商网站饿建设

深圳外贸英文网站设计公司哪家好,电子商务电商网站饿建设,wordpress tag静态,网站建设下载模板之后怎么修改在MyBatis框架中#xff0c;if标签用于在构建SQL语句时#xff0c;根据参数条件判断的结果#xff0c;动态地选择加入或不加where条件中。 一 常见使用 在使用MyBatis处理查询逻辑的时候#xff0c;常用的是判断一些参数是否为空#xff0c;列举常用的几种情况展示 1.1…在MyBatis框架中if标签用于在构建SQL语句时根据参数条件判断的结果动态地选择加入或不加where条件中。 一 常见使用 在使用MyBatis处理查询逻辑的时候常用的是判断一些参数是否为空列举常用的几种情况展示 1.1 数据准备 1.1.1 创建表模型 CREATE TABLE approval_info (id BIGINT NOT NULL AUTO_INCREMENT,info_name VARCHAR(128) DEFAULT NULL,info_type VARCHAR(32) DEFAULT NULL,info_size VARCHAR(32) DEFAULT NULL,approval_time DATETIME DEFAULT NULL,create_time DATETIME DEFAULT NULL,PRIMARY KEY (id) ) 1.1.2 创建实体类 Data AllArgsConstructor NoArgsConstructor public class ApprovalInfo {private Long id;private String infoName;private String infoType;private String infoSize;private Date approvalTime;private Date createTime; } 1.1.3 创建mapper层 public interface ApprovalInfoMapper {} ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapper/mapper 1.1.4 插入测试数据 Test public void insertBatchObject() {ListApprovalInfo approvalInfoList new ArrayList();// 使用工具类往集合中添加数据Collections.addAll(approvalInfoList, new ApprovalInfo(null, cultureProjectOne, culture, A, assembleDate(2023-12-05 10:10:10), assembleDate(2023-11-15 08:08:10)),new ApprovalInfo(null, tourismProjectOne, tourism, A, assembleDate(2023-12-06 09:10:11), assembleDate(2023-11-19 15:13:11)),new ApprovalInfo(null, gameProjectOne, game, A, assembleDate(2023-12-08 17:10:13), assembleDate(2023-11-21 01:03:16)),new ApprovalInfo(null, cultureProjectTwo, culture, B, assembleDate(2023-12-11 01:07:15), assembleDate(2023-11-25 20:23:40)),new ApprovalInfo(null, cultureProjectThree, culture, B, assembleDate(2023-12-17 07:12:07), assembleDate(2023-12-29 13:41:11)),new ApprovalInfo(null, tourismProjectTwo, tourism, C, assembleDate(2023-12-21 13:01:19), assembleDate(2023-12-01 11:31:19)),new ApprovalInfo(null, gameProjectTwo, game, C, assembleDate(2023-12-25 19:13:10), assembleDate(2023-12-03 17:51:15)),new ApprovalInfo(null, gameProjectThree, game, B, assembleDate(2023-12-27 02:11:10), assembleDate(2023-12-04 12:10:21)),new ApprovalInfo(null, tourismProjectThree, tourism, B, assembleDate(2023-12-29 06:19:10), assembleDate(2023-12-05 15:43:21)),new ApprovalInfo(null, cultureProjectFour, culture, C, assembleDate(2023-12-31 01:09:10), assembleDate(2023-12-08 20:21:37)));int effectLineNumber approvalInfoMapper.saveBatchApprovalInfo(approvalInfoList);System.out.println(effectLineNumber is: effectLineNumber); }private Date assembleDate(String strDate) {try {SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);return simpleDateFormat.parse(strDate);} catch (ParseException e) {e.printStackTrace();throw new RuntimeException(e.getMessage());} } public interface ApprovalInfoMapper {int saveBatchApprovalInfo(Param(approvalInfoList) ListApprovalInfo approvalInfoList); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperinsert idsaveBatchApprovalInfoinsert into approval_info(info_name, info_type, info_size, approval_time, create_time)valuesforeach collectionapprovalInfoList itemapprovalInfo separator,(#{approvalInfo.infoName}, #{approvalInfo.infoType}, #{approvalInfo.infoSize},#{approvalInfo.approvalTime}, #{approvalInfo.createTime})/foreach/insert /mapper 表中数据如下 1.2 mapper方法参数是String类型 mapper方法参数是String类型如果在查询条件中infoType的值不为空那么就加上infoType的判断条件 Test public void testQueryApprovalInfosByType() {// Preparing: select id, info_name, info_type, info_size, approval_time, create_time from approval_info// Parameters:// Total: 10// String infoType null;// String infoType ;// Preparing: select id, info_name, info_type, info_size, approval_time, create_time from approval_info WHERE info_type ?// Parameters: (String)// Total: 0// String infoType ;// Preparing: select id, info_name, info_type, info_size, approval_time, create_time from approval_info WHERE info_type ?// Parameters: culture(String)// Columns: id, info_name, info_type, info_size, approval_time, create_time// Row: 1, cultureProjectOne, culture, A, 2023-12-05 10:10:10, 2023-11-15 08:08:10// Row: 4, cultureProjectTwo, culture, B, 2023-12-11 01:07:15, 2023-11-25 20:23:40// Row: 5, cultureProjectThree, culture, B, 2023-12-17 07:12:07, 2023-12-29 13:41:11// Row: 10, cultureProjectFour, culture, C, 2023-12-31 01:09:10, 2023-12-08 20:21:37// Total: 4//[// ApprovalInfo(id1, infoNamecultureProjectOne, infoTypeculture, infoSizeA, approvalTimeTue Dec 05 10:10:10 CST 2023, createTimeWed Nov 15 08:08:10 CST 2023),// ApprovalInfo(id4, infoNamecultureProjectTwo, infoTypeculture, infoSizeB, approvalTimeMon Dec 11 01:07:15 CST 2023, createTimeSat Nov 25 20:23:40 CST 2023),// ApprovalInfo(id5, infoNamecultureProjectThree, infoTypeculture, infoSizeB, approvalTimeSun Dec 17 07:12:07 CST 2023, createTimeFri Dec 29 13:41:11 CST 2023),// ApprovalInfo(id10, infoNamecultureProjectFour, infoTypeculture, infoSizeC, approvalTimeSun Dec 31 01:09:10 CST 2023, createTimeFri Dec 08 20:21:37 CST 2023)// ]String infoType culture;ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfosByType(infoType);System.out.println(approvalInfoList); } 如果infoType的值为null那么info_type #{infoType}就不会加入到where条件中查询出全部的数据 如果infoType的值为那么info_type #{infoType}就不会加入到where条件中查询出全部的数据 如果infoType的值为  那么info_type #{infoType}就会加入到where条件中且查询出来的结果当然是空的MyBatis不会去除空格再进行计算 如果infoType的值为culture那么info_type #{infoType}就会加入到where条件中且只查询符合条件的结果且从数据库中查出来的顺序就是往List有序集合中依次添加的顺序 public interface ApprovalInfoMapper {ListApprovalInfo queryApprovalInfosByType(Param(infoType) String infoType); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMapselect idqueryApprovalInfosByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testinfoType ! null and infoType ! info_type #{infoType}/if/where/select /mapper 在mapper映射文件中要写resultMap标签用于在查询语句中将表中的字段映射到Java对象的属性中 在mapper映射文件中where条件后面只有一个if标签那么要写成where标签嵌套if标签 mapper方法参数是String类型那么在mapper映射文件中就需要判断参数是否等于null和是否等于空字符串 1.3 mapper方法参数是Long类型 mapper方法参数是包装类Long类型或是long类型的区别 如果在查询条件中(Long类型)id的值不为空那么就加上id的判断条件 Test public void testSelectApprovalInfoByBaseId() {// Long targetId 5L;// long targetId 5L;Long targetId null;ListApprovalInfo approvalInfoList1 approvalInfoMapper.queryApprovalInfoListByBaseId(targetId);ListApprovalInfo approvalInfoList2 approvalInfoMapper.queryApprovalInfoListByWrapperId(targetId);System.out.println(approvalInfoList1);System.out.println(approvalInfoList2);System.out.println(集合中第一条数据: approvalInfoList1.get(0));System.out.println(集合中最后一条数据: approvalInfoList1.get(approvalInfoList1.size() - 1)); } 在服务层调用mapper层的queryApprovalInfoListByBaseId(Param(id) long id)方法对方法参数传值描述如下         如果对mapper层的方法参数id传基本数据类型可以正常使用         如果对mapper层的方法参数id传包装类型那么会先进行拆箱(由Long--long)传null值会抛异常 在服务层调用mapper层queryApprovalInfoListByWrapperId(Param(id) Long id)方法对方法参数传值描述如下         如果对mapper层的方法参数id传基本数据类型可以正常使用         如果对mapper层的方法参数id传包装类型可以正常使用小结mapper层接口参数有动态sql条件时最好使用包装类型而不是基本数据类型 public interface ApprovalInfoMapper {/*** mapper层方法参数有参与到动态sql条件, 最好使用包装类型, 而不是基本数据类型*/ListApprovalInfo queryApprovalInfoListByBaseId(Param(id) long id);ListApprovalInfo queryApprovalInfoListByWrapperId(Param(id) Long id); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMapselect idqueryApprovalInfoListByBaseId resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testid ! nullid #{id}/if/where/selectselect idqueryApprovalInfoListByWrapperId resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testid ! nullid #{id}/if/where/select /mapper mapper方法参数是Long类型那么在mapper映射文件中就只需要判断参数是否等于null 番外篇 篇一关于表中记录为空时查询结果是null譬如查询表中的最值在mapper层的方法返回值中使用基本数据类型还是包装类型 Test public void testMaxIndex() {Long maxIndexWrapperType approvalInfoMapper.getMaxIndexWrapperType();System.out.println(maxIndexWrapperType is: maxIndexWrapperType);long maxIndexBaseType approvalInfoMapper.getMaxIndexBaseType();System.out.println(maxIndexBaseType is: maxIndexBaseType); } 如果表中有数据那么方法返回值使用long类型或是Long类型都可以 如果表中没有数据那么方法返回值使用long类型接收null值会报错Long类型可以接收null值 小结如果表中记录为空且查询结果为null譬如mapper层获取表中字段最值时方法返回值类型使用包装类型 public interface ApprovalInfoMapper {/*** 获取表中字段的最值使用包装类型, long类型不能接收null值*/long getMaxIndexBaseType();Long getMaxIndexWrapperType(); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperselect idgetMaxIndexBaseType resultTypelongselect MAX(id) from approval_info/selectselect idgetMaxIndexWrapperType resultTypejava.lang.Longselect MAX(id) from approval_info/select /mapper 篇二关于表中记录为空时查询结果是0譬如统计表中记录的数量在mapper层的方法返回值中使用基本数据类型还是包装类型 Test public void testCount() {long baseCount approvalInfoMapper.queryCountBaseType();System.out.println(基本数据类型接收的值: baseCount);Long wrapperCount approvalInfoMapper.queryCountWrapperType();System.out.println(包装数据类型接收的值: wrapperCount); } 如果表中没有数据那么方法返回值0使用long类型或是Long类型都可以接收 如果表中有数据那么方法返回值10使用long类型或是Long类型都可以接收 小结如果表中记录为空且查询结果为0譬如mapper层统计表中记录的数量方法返回值类型使用基本数据类型和包装类型都可以 public interface ApprovalInfoMapper {/*** 获取表中记录的数量*/long queryCountBaseType();Long queryCountWrapperType(); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperselect idqueryCountBaseType resultTypelongselect count(*) from approval_info/selectselect idqueryCountWrapperType resultTypejava.lang.Longselect count(*) from approval_info/select /mapper 1.4 mapper方法参数是Date类型 mapper方法参数是包装类Date类型如果在查询条件中date的值不为空那么就加上date的判断条件 Test public void testSelectApprovalInfoByDate() {// Date date null;Date date assembleDate(2023-12-03 17:51:15);ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfoListByDate(date);System.out.println(approvalInfoList);System.out.println();System.out.println(approvalInfoList.get(0));System.out.println(approvalInfoList.get(approvalInfoList.size() - 1)); } private Date assembleDate(String strDate) {try {SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);return simpleDateFormat.parse(strDate);} catch (ParseException e) {e.printStackTrace();throw new RuntimeException(e.getMessage());} } public interface ApprovalInfoMapper {/*** 使用date类型筛选数据*/ListApprovalInfo queryApprovalInfoListByDate(Param(date) Date date); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMap!-- 方式一 --select idqueryApprovalInfoListByDate resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testdate ! nullcreate_time #{date}/if/where/select!-- 方式二 --select idqueryApprovalInfoListByDate resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testdate ! nullcreate_time gt; #{date}/if/where/select!-- 方式三 --select idqueryApprovalInfoListByDate resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testdate ! nullcreate_time ![CDATA[]] #{date}/if/where/select /mapper mapper方法参数是Date类型那么在mapper映射文件中就只需要判断参数是否等于null 1.5 小结 如果MyBatis的mapper层方法参数是String类型那么在mapper映射文件需要判断参数不等于null和不等于空字符串 如果MyBatis的mapper层方法参数是Long类型等基本数据类型对应的包装类型那么在mapper映射文件只需要判断参数不等于null 如果MyBatis的mapper层方法参数是Date类型那么在mapper映射文件只需要判断参数不等于null 在MyBatis表示关系运算符的方式有如下三种 方式一可以使用关系运算符和关系运算符不可以使用关系运算符或关系运算符 方式二可以将关系运算符进行转义使用开头和使用;结尾的方式 lt;lt;gt;gt;amp;apos;quot; 方式三可以使用![CDATA[ ]]嵌套关系运算符![CDATA[]]![CDATA[]]![CDATA[]]和![CDATA[]] 二 其他使用 2.1 if标签指定的单个字符 如果infoSize的值是指定字符A那就查询指定字符A的ApprovalInfo集合如果不是那就查询全部的ApprovalInfo集合 Test public void testSelectApprovalInfoBySize() {String size A;ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfoListBySize(size);System.out.println(approvalInfoList); } public interface ApprovalInfoMapper {/*** 当参数值是单字符时, 对应着的动态sql标签的判断条件如何处理*/ListApprovalInfo queryApprovalInfoListBySize(Param(size) String size); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMapselect idqueryApprovalInfoListBySize resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testsize Ainfo_size #{size}/if/where/select /mapper 2.2  if标签指定的多个字符 如果infoType的值是指定的字符串culture那就查询指定的字符串culture的ApprovalInfo集合如果不是那就查询全部的ApprovalInfo集合 Test public void testSelectApprovalInfoByType() {// Preparing: select id, info_name, info_type, info_size, approval_time, create_time from approval_info// Parameters:// Total: 10// String type null;// String type culture12306;// Preparing: select id, info_name, info_type, info_size, approval_time, create_time from approval_info WHERE info_type ?// Parameters: culture(String)// Total: 4String type culture;ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfoListByType(type);System.out.println(approvalInfoList);System.out.println();System.out.println(approvalInfoList.get(0));System.out.println(approvalInfoList.get(approvalInfoList.size() - 1)); } public interface ApprovalInfoMapper {/*** 当参数值是多字符时, 对应着的动态sql标签的判断条件如何处理* mapper接口中的方法参数, 只是用于mapper映射文件中的条件判断和组装sql字段值, 不一定要和表中字段名保持一致*/ListApprovalInfo queryApprovalInfoListByType(Param(infoType) String infoType); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMap!-- 方式一 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testinfoType cultureinfo_type #{infoType}/if/where/select!-- 方式二 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testinfoType cultureinfo_type #{infoType}/if/where/select /mapper 在mapper映射文件中判断方法参数是否等于指定的值使用if标签的test属性值可以写如下两种书写的格式 if test infoType culture 双引号和单引号配合着使用         if test infoType culture 单引号和双引号配合着使用 2.3  if标签指定的数字 如果id的值是指定长整型5那就查询infoType是culture的ApprovalInfo集合 如果id的值是指定长整型7那就查询infoType是tourism的ApprovalInfo集合 Test public void testQueryApprovalInfoListById() {// Long id 5L;// Long id 6L;Long id 7L;String type assembleMapData().get(id);ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfoListById(id, type);System.out.println(approvalInfoList); } private MapLong, String assembleMapData() {MapLong, String map new HashMap();map.put(5L, culture);map.put(7L, tourism);return map; } public interface ApprovalInfoMapper {/*** 当参数值是数字时, 对应着的动态sql标签的判断条件如何处理*/ListApprovalInfo queryApprovalInfoListById(Param(id) Long id, Param(infoType) String infoType); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMap!-- 方式一 --select idqueryApprovalInfoListById resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testid 5and info_type #{infoType}/ifif testid 7and info_type #{infoType}/if/where/select!-- 方式二 --select idqueryApprovalInfoListById resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testid 5and info_type #{infoType}/ifif testid 7and info_type #{infoType}/if/where/select /mapper 2.4 if标签的test属性介绍 在MyBatis中if标签的test属性值用于设置条件判断 如果test属性值为true那么if标签的条件会加到where中 如果test属性值为false那么if标签的条件不会加到where中 if标签的test属性值的条件判断的内容可以写基本数据类型字符串常量关系表达式和引用类型对象 Test public void testSelectApprovalInfoByType() {String type culture;ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfoListByType(type);System.out.println(approvalInfoList); } public interface ApprovalInfoMapper {ListApprovalInfo queryApprovalInfoListByType(Param(infoType) String infoType); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMap!-- 方式一: boolean类型 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testtrueinfo_type #{infoType}/if/where/select!-- 方式二: 数字(byte short int long float double)类型, 0为false, 非0(哪怕是0.0)为true --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif test1info_type #{infoType}/if/where/select!-- 方式三: char类型, 任意char类型都表示为true --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testainfo_type #{infoType}/if/where/select!--单引号单字符会解析成char类型;双引号单字符会解析成String类型;单引号多字符会解析成String类型;多引号多字符会解析成String类型;--!-- 方式四: String类型, String类型都表示为true --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testabcinfo_type #{infoType}/if/where/selectselect idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testabcinfo_type #{infoType}/if/where/select!-- 方式五: 关系表达式, 相等表达式 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testabcabcinfo_type #{infoType}/if/where/select!-- 方式六: 关系表达式, 不相等表达式 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testabc ! cbainfo_type #{infoType}/if/where/select!-- 方式七: 引用类型对象, infoType是String类型 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testinfoTypeinfo_type #{infoType}/if/where/select!-- 方式八: 引用类型对象, infoType用在关系表达式中 --select idqueryApprovalInfoListByType resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testinfoType cultureinfo_type #{infoType}/if/where/select /mapper 小结在if标签的test属性值表达式中引用类型对象不加引号(双引号或单引号)字符和字符串类型需要加引号(双引号或单引号) 在mapper映射文件中if标签的标签体是表字段、运算符和值表达式其中值表达式和if标签的test属性值表达式的内容是一致的只不过在使用引用类型时需要使用#{}或${}给包括起来 在mapper接口的方法中方法参数可以自定义需要的参数不一定非得和表中字段一样或是匹配只要能表述清楚就可以了 Test public void testSelectApprovalInfoByCustomize() {String type culture;String code en;ListApprovalInfo approvalInfoList approvalInfoMapper.queryApprovalInfoListByCustomize(type, code);System.out.println(approvalInfoList); } public interface ApprovalInfoMapper {ListApprovalInfo queryApprovalInfoListByCustomize(Param(customizeType) String customizeType, Param(customizeCode) String customizeCode); } ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mango.mapper.ApprovalInfoMapperresultMap idapprovalInfoMap typecom.mango.domain.ApprovalInfoid propertyid columnid/result propertyinfoName columninfo_name/result propertyinfoType columninfo_type/result propertyinfoSize columninfo_size/result propertyapprovalTime columnapproval_time/result propertycreateTime columncreate_time//resultMapselect idqueryApprovalInfoListByCustomize resultMapapprovalInfoMapselect id, info_name, info_type, info_size, approval_time, create_timefrom approval_infowhereif testcustomizeCode enand info_type #{customizeType}/if/where/select /mapper 2.5 MyBatis中#{}常用属性 MyBatis中#{}占位符的常用属性javaType、jdbcType、mode、numericScale、resultMap、typeHandler、jdbcTypeName、expression。 javaType属性指定参数的Java类型 jdbcType属性指定参数的JDBC类型 ‌typeHandler‌属性指定自定义的类型处理器用于处理特定类型的参数或结果‌ MyBatis在预编译(parsing)阶段会读取SQL中的字段类型以确保预编译SQL的字段类型正确 MyBatis在预编译(parsing)阶段由SqlSourceBuilder解析#{}参数将#{}替换为?号(占位)并将#{}中的内容解析为ParameterMapping的封装ParameterMapping包含了参数的各个属性解析是除了typeHandler和javaType外其它属性都直接从配置中获取到然后设定若未指定则为nullParameterMapping中的typeHandler和javaType是必须要的因为在后面通过setter方法设置参数值时从#{}中javaType属性指定的类型信息来选择对应的setter方法进行参数设定最后执行sql 在执行sql时但是有时候在执行的时会报ClassCastException譬如表中字段是单字符就会报String cannot be cast to Integer的错误需要手动设置参数的Java类型为info_size #{size, javaTypeString}
http://www.tj-hxxt.cn/news/139185.html

相关文章:

  • 专业型网站建设方案微信模板图片
  • 做网站为什么要投资钱深圳罗湖网站建设
  • 别人带做的网站关闭了权限咋办门窗设计软件免费版
  • 天津哪里能做网站金华网络公司网站建设
  • 网站制作软件网页设计图片路径怎么写
  • 制作手机软件网站网站广告推广哪家好
  • 郑州seo使用教程seo管家
  • 洛宁县东宋乡城乡建设局网站app开发大约多少钱
  • 淮北建设工程质量安全站网站北京随喜设计网站
  • 微信自媒体网站建设黄山旅游住宿攻略
  • 东莞莞城网站建设公司短视频培训学校
  • 建设网站和别人公司重名wordpress哪个seo工具好
  • 南上海网站建设做什么网站比较简单
  • 铜川网站seo淘宝客网站容易做吗
  • 怎么为做的网站配置域名wordpress随机弹窗插件
  • 类似淘宝网站建设费用天猫店购买交易平台
  • 有经验的手机网站建设枣阳做网站
  • 做公司网站详细步骤珠宝网站建设要以商为本
  • 观音桥网站建设沈阳流产手术哪家比较好
  • 外链发布工具下载国家二十条优化措施
  • 怎么下载网站页面网站备案回访电话号码
  • 珠海商城网站wordpress nana主题
  • 网站建设知识文章wordpress 页面排序
  • 站内seo内容优化包括做网站运营经理的要求
  • 最新网站建设哪家快河南建筑公司排名
  • 微信手机网站门户网站开发难点
  • 网站怎么做支付宝接口网站定制开发
  • 松江品划网站建设维护tvc广告片制作公司
  • 杭州网站开发建设济宁市建设工程质量监督站网站
  • 墙外必去的网站网站建设毕业设计