【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中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...
随机推荐
- Mac 终端命令查看WiFi连接日志【原创】
写这篇文章的原因是因为经常通过钉钉打上班卡忘记打卡了,我们标准上班时间是上午8:00-10:00 ,对应下班时间是 17:00-19:00 ,有时8:30到公司,就开始忙碌了,作为程序员有时后一忙就 ...
- Codeforces Round 909 (Div3)(本菜鸟只补到了E)
Codeforces Round 909 (Div.3) A. Game with Integers 水题,就是可以被3整除的输出"Second",不能被3整除的输出"F ...
- 【ASP.NET Core】MVC过滤器:常见用法
前面老周给大伙伴们演示了过滤器的运行流程,大伙只需要知道下面知识点即可: 1.过滤器分为授权过滤.资源访问过滤.操作方法(Action)过滤.结果过滤.异常过滤.终结点过滤.上一次咱们没有说异常过滤和 ...
- Nim 枚举类型 对性能的影响
Nim 枚举类型 对性能的影响 继上一篇文章<Nim 概念 Concept 对性能的影响>后,我在想,既然 method 虚方法造成性能的影响很大,那么有没有更快的方法实现,当然是有的,那 ...
- 浅谈SQL优化小技巧
回顾MySQL的执行过程,帮助介绍如何进行sql优化. (1)客户端发送一条查询语句到服务器: (2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据: (3)未命中缓存后,MySQL通过 ...
- 吉特日化MES & 再谈原料标签
在前面之前提到的标签的选择和设计,原料标签可以做到如下几点: 1 原料标签是一物一码还是一码多物:在美妆类的原料建议原料标签采用一物一码,对于大液洗之类的产品原料如果能够做到一物一码最佳,但是 ...
- drf实战和源码剖析----学习笔记1
学自:bilibili武沛齐老师. 武老师讲课:清晰,连贯,实用,透彻,真乃名师! # 1. 什么是前后端分离 - 不分离,主要用于后台系统(CRUD)和用户量上的情况,开发起来代价小- 分离,面向用 ...
- 2023年的PHP项目部署笔记。什么?还有人用PHP?
前言 这是我第一次用 PHP 的包管理工具 composer 一开始用 docker 进行部署,但一直出问题,最后还是选择直接在服务器上安装 php-fpm 搭配 nginx 的方案了. PS:doc ...
- DI入门案例
1.基于IoC管理bean 2.Service中使用new形式创建的Dao对象是否保留?(不保留) 3.Service中需要的Dao对象如何进入到Service中?(提供方法) 4.Service与D ...
- Python subprocess 使用(二)
Python subprocess 使用(二) 本篇继续介绍subprocess的使用. 这里主要添加两个自己在工作过程中常用的两个小命令. 1: 获取顶层activity import subpro ...