【JAVA基础】Mybatis示例
固定时间范围查询
<select id="selectPaidList" resultType="com.hand.htms.ifp.entity.IfpShipment">
SELECT
*
FROM
ifp_shipment t1
WHERE (t1.creation_date > #{beginDate} and t1.creation_date<#{endDate})
and ( t1.shipper_pay_status = 'PAID' or t1.shipper_pay_status = 'PARTIALPAID' )
<if test="tenantId !=null and tenantId != 1">
and t1.tenant_id = #{tenantId}
</if>
</select>
<select id="selectShipment" resultType="com.hand.htms.ifp.entity.IfpShipment">
SELECT
*
FROM
ifp_shipment t1
WHERE t1.shipment_status =#{status}
<if test="status != null and status == 'TO_LOAD'">
and (t1.creation_date > #{beginDate} and t1.creation_date<#{endDate})
</if>
<if test="status != null and status == 'TO_UNLOAD'">
and (t1.load_date > #{beginDate} and t1.load_date<#{endDate})
</if>
<if test="status != null and status == 'TO_SIGN'">
and (t1.unload_date > #{beginDate} and t1.unload_date<#{endDate})
</if>
<if test="status != null and status == 'SIGN'">
and (t1.sign_date > #{beginDate} and t1.sign_date<#{endDate})
</if>
<if test="tenantId !=null and tenantId != 1">
and t1.tenant_id = #{tenantId}
</if>
</select>
模糊查询
<select id="selectlist" resultType="com.hand.htms.ifp.dto.IfpShipmentAppDTO">
select
<include refid = "BaseSql"/>
from
ifp_shipment iil
where
iil.driver_gid = #{driverGid}
and
iil.shipment_status = #{shipmentStatus}
<if test="xid != null">
<bind name="xidLike" value="'%'+xid+'%'"/>
and iil.xid like #{xidLike}
</if>
<if test="vehicleGid != null">
and iil.vehicle_gid = #{vehicleGid}
</if>
<if test="sourceName != null">
<bind name="sourceNameLike" value="'%'+sourceName+'%'"/>
and iil.source_name like #{sourceNameLike}
</if>
<if test="sourcePhone != null">
<bind name="sourcePhoneLike" value="'%'+sourcePhone+'%'"/>
and iil.source_phone like #{sourcePhoneLike}
</if>
<if test="destName != null">
<bind name="destNameLike" value="'%'+destName+'%'"/>
and iil.dest_name like #{destNameLike}
</if>
<if test="destPhone != null">
<bind name="destPhoneLike" value="'%'+destPhone+'%'"/>
and iil.dest_phone like #{destPhoneLike}
</if>
</select>
精确查询
<select id="listProject" resultType="com.inja.spot.domain.entity.Project">
SELECT
sbp.project_name,
sbp.factory_meaning,
sbp.project_code,
sbp.project_id,
sbp.remark,
delete_flag
FROM
spot_bd_project sbp
WHERE
tenant_id = #{organizationId}
AND
delete_flag = 'N'
<if test="projectName != null and projectName != ''">
and sbp.project_name like concat('%',#{projectName},'%')
</if>
<if test="projectCode != null">
and sbp.project_code = #{projectCode}
</if>
<if test="factoryMeaning != null and factoryMeaning != ''">
and sbp.factory_meaning like concat('%',#{factoryMeaning},'%')
</if>
ORDER BY sbp.creation_date DESC
</select>
String型需要校验不为null和不为空,Long型只需要校验不为null;需要使用concat拼接,否则会有SQL注入的风险。
连表查询
https://blog.csdn.net/Java_is_NO_1/article/details/117933024

insert操作
<!--id属性:表示映射的接口中方法的名称,直接标签的内容部来编写SQL语句-->
<!--useGeneratedKeys="true"表示开启某个字段的值递增(大部分都是主键递增)
keyProperty="uid"表示将表中哪个字段进行递增
-->
<insert id="insert" useGeneratedKeys="true" keyProperty="aid">
INSERT INTO t_address (
uid, `name`, province_name, province_code, city_name, city_code, area_name, area_code, zip,
address, phone, tel,tag, is_default, created_user, created_time, modified_user, modified_time
) VALUES (
#{uid}, #{name}, #{provinceName}, #{provinceCode}, #{cityName}, #{cityCode}, #{areaName},
#{areaCode}, #{zip}, #{address}, #{phone}, #{tel}, #{tag}, #{isDefault}, #{createdUser},
#{createdTime}, #{modifiedUser}, #{modifiedTime}
)
</insert>
单一参数的情况
<select id="listRegion" resultType="com.inja.spot.domain.entity.Region">
SELECT
sbr.region_id,
sbr.country_name,
sbr.country_id,
sbr.region_name,
sbr.prov_name,
sbr.prov_id,
sbr.city_name,
sbr.city_id,
sbr.region_meaning
FROM
spot_bd_region sbr
WHERE
sbr.delete_flag = 'N'
<if test="_parameter != null and _parameter != ''">
and sbr.region_name like concat('%',#{_parameter },'%')
</if>
ORDER BY sbr.creation_date DESC
</select>

不进入Mapper查询
if (null != lovVlaues && lovVlaues.size() > 0) {
//将lovVlaues中的value值(租户Num)取出,并进行非空校验
List<String> tags = lovVlaues.stream().filter(lovValueDTO -> lovValueDTO.getTag() != null)
.map(lovValueDTO -> lovValueDTO.getTag()).collect(Collectors.toList());
if (null != tags && tags.size() > 0) {
//取自营店铺的租户id
sellerTenantId = Long.parseLong(tags.get(0));
//取自营店铺(卖家)店铺信息
sellerShop = shopRepository.selectByCondition(Condition.builder(Shop.class)
.andWhere(Sqls.custom().andEqualTo(Shop.FIELD_TENANT_ID, sellerTenantId)).build())
.stream().findFirst().orElse(null);
}
}
值集示例
SELECT
ifp_shipment.id,
ifp_shipment.xid,
ic.name as shipper_name,
id.name as driver_name,
iv.lpn
FROM
ifp_shipment
left join ifp_company ic on ifp_shipment.shipper_company_id = ic.id
left join ifp_driver id on ifp_shipment.driver_gid = id.id
left join ifp_vehicle iv on ifp_shipment.vehicle_gid = iv.id
WHERE
1=1
<if test='organizationId != null'>
and ifp_shipment.tenant_id = #{organizationId}
</if>
<if test='xid != null and xid != ""'>
AND ifp_shipment.xid LIKE concat('%', concat(#{xid}, '%'))
</if>
<if test='shipperName!= null and shipperName!= ""'>
AND ic.name LIKE concat('%', concat(#{shipperName}, '%'))
</if>
<if test='driverName!= null and driverName!= ""'>
AND id.name LIKE concat('%', concat(#{driverName}, '%'))
</if>
selectOptional查询


@Override
public ReturnT execute(final Map<String, String> map, final SchedulerTool tool) {
IfpShipment ifpShipment = new IfpShipment();
Criteria criteria = new Criteria(ifpShipment);
criteria.setWhereSql("A.pro_platform_shipment_status = 'N' AND A.vehicle_status = 'normal' AND (A.locating_information_status = 'normal' or A.locating_information_status = 'abnormal') AND A.unload_time_status = 'normal' AND A.unload_quantity_status = 'normal'");
List<IfpShipment> ifpShipmentList = ifpShipmentService.selectOptional(ifpShipment,criteria);
if(!CollectionUtils.isEmpty(ifpShipmentList)){
cuzIfpShipmentService.shipmentListPush(ifpShipmentList);
}
return ReturnT.SUCCESS;
}
【JAVA基础】Mybatis示例的更多相关文章
- Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例
Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...
- Java基础-SSM之Spring和Mybatis整合案例
Java基础-SSM之Spring和Mybatis整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在之前我分享过mybatis和Spring的配置案例,想必大家对它们的 ...
- Java基础-SSM之mybatis的统计函数和分页查询
Java基础-SSM之mybatis的统计函数和分页查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-SSM之mybatis一对一关联
Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbands和wifes表并建 ...
- Java基础-SSM之mybatis多对多关联
Java基础-SSM之mybatis多对多关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建teas,stus,links表 u ...
- Java基础-SSM之mybatis一对多和多对一关系映射
Java基础-SSM之mybatis一对多和多对一关系映射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建customers表: ...
- Java基础-SSM之mybatis的树形控件(自关联)
Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...
- Java基础-SSM之mybatis一对一外键关联
Java基础-SSM之mybatis一对一外键关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbandsfk和wife ...
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
- 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例
019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...
随机推荐
- 深入了解PBKDF2加密技术:原理与实践
摘要:本文详细介绍了PBKDF2(Password-Based Key Derivation Function 2)加密技术,包括其原理.算法流程和实际应用,旨在帮助读者更好地理解这一重要的加密方法. ...
- ruoyi vue 前后端分离版本 打包分离jar包至lib
环境:若依前后端分离版本,原打包时将所有的依赖jar包放至ruoyi-admin.jar 包中,该包130MB,过大. 需求:为了减少打包更新上传的时间,减少至1.1mb 1.将不常更新的模块jar包 ...
- java制作游戏,如何使用libgdx,入门级别教学
第一步,进入libgdx的官网.点击get started 进入这个页面,点击setup a project 进入这个页面直接点击,Generate a project. 点击下载,下载创建工具 它会 ...
- Java并发(十七)----变量的线程安全分析
1.成员变量和静态变量是否线程安全 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全 如果有读写操作,则这段代码是临界区,需要考虑线 ...
- Spring Framework系统架构
- zookeeper JavaApi 修改节点
*修改数据 * 1.修改数据 * 2.根据版本修改 * * * */ @Test public void testSet() throws Exception{ Stat stat = new Sta ...
- VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格(二)
1.文档说明 1.1.内容回顾 之前发表过相关文章<VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格>,本篇文章对上一篇文章做补充说明. 第一篇文章是通过拥有权限,则隐 ...
- 超轻量级MP4封装方法介绍
liwen01 2023.12.17 前言 MP4是目前非常常用的一种视频封装格式,关于MP4的介绍资料也非常多.我们常用的封装库或工具有:ffmpeg,libmp4v2,GPAC,MP4.js,它们 ...
- 开源MES/免费MES/开源mes 生产管理流程
开源MES/免费MES/开源MES生产流程管理 一.什么是MES生产管理流程 生产管理系统(又称制造执行系统)是一种集成了计划.生产.质量控制.库存管理和材料申请等生产流程的管理系统.工厂生产管理流程 ...
- ElasticSearch之Index modules
索引的参数,分为两类: 静态参数,仅支持在创建索引时指定,或者关闭索引后指定. 动态参数,允许在索引工作期间指定或者修改. 静态参数 index.number_of_shards 默认值为1. 本参数 ...