Java @Mapper 使用注解的方式注入SQL的详细过程
MySQL 的 JSON 数据类型(从 MySQL 5.7.8 开始支持)允许你在表中存储和处理 JSON 格式的数据。
JSON 数据类型提供了灵活性,但应谨慎使用。对于需要复杂查询、索引或关系约束的数据,传统的关系表结构通常是更好的选择。
mysql中in语句的处理。
一、例如SQL:update bill_main set bill_state = '00' where bill_no in ();
处理如下:
@Update(" update bill_main set bill_state = '00' where bill_no in <foreach collection='billNoList' item='billNo' open='(' separator=',' close=')'> #{billNo}</foreach> ")
Boolean approveReject(@Param("billNoList") List<String> billNoList);
@Update(" update bill_main set bill_state = '00' where bill_no in <foreach collection='billNoList' item='billNo' open='(' separator=',' close=')'> #{billNo}</foreach> ")
Boolean approveReject(@Param("billNoList") List<String> billNoList);二、遇到数据类为JOSN的SQL的处理(t3)
SELECT t1.id,
t1.bill_no,
t1.process_instance_id,
t1.process_definition_id,
t1.process_deployment_id,
t1.approve_id,
t1.remark,
t1.enabled_flag,
json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserId')) comApplyUserId,
json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserName')) comApplyUserName,
json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserCode')) comApplyUserCode,
t3.hj_value, #工时
t3.yye04,#项目
t3.comSubCategoryCode #月份
FROM bill_main t1
LEFT JOIN bill_main_data t2 ON t1.id = t2.id
LEFT join (
SELECT
t.id,#单据号
jt.hj_value, #工时
jt.yye04,#项目
jt.comSubCategoryCode #月份
FROM bill_main_data t,
JSON_TABLE(
t.BILL_DATA->'$.jyInfo',
'$[*]' COLUMNS (
idx FOR ORDINALITY,
hj_value VARCHAR(100) PATH '$.hj',
yye04 VARCHAR(100) PATH '$.yye04',
comSubCategoryCode VARCHAR(100) PATH '$.comSubCategoryCode'
) ) AS jt
) t3
on t1.id = t3.id
SELECT t1.id,
t1.bill_no,
t1.process_instance_id,
t1.process_definition_id,
t1.process_deployment_id,
t1.approve_id,
t1.remark,
t1.enabled_flag,
json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserId')) comApplyUserId,
json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserName')) comApplyUserName,
json_unquote(json_extract(json_extract(t2.BILL_DATA,'$.comBasicInfo'),'$[0].comApplyUserCode')) comApplyUserCode,
t3.hj_value, #工时
t3.yye04,#项目
t3.comSubCategoryCode #月份
FROM bill_main t1
LEFT JOIN bill_main_data t2 ON t1.id = t2.id
LEFT join (
SELECT
t.id,#单据号
jt.hj_value, #工时
jt.yye04,#项目
jt.comSubCategoryCode #月份
FROM bill_main_data t,
JSON_TABLE(
t.BILL_DATA->'$.jyInfo',
'$[*]' COLUMNS (
idx FOR ORDINALITY,
hj_value VARCHAR(100) PATH '$.hj',
yye04 VARCHAR(100) PATH '$.yye04',
comSubCategoryCode VARCHAR(100) PATH '$.comSubCategoryCode'
) ) AS jt
) t3
on t1.id = t3.id三、mysql json 数据类型的使用示例
-- 创建电商商品表
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
attributes JSON,
price DECIMAL(10,2)
);
-- 插入商品数据
INSERT INTO products VALUES
(1, '手机', '{"brand": "苹果", "color": "黑色", "storage": "128GB", "specs": {"ram": "4GB", "cpu": "A15"}}', 6999),
(2, '笔记本', '{"brand": "戴尔", "color": "银色", "storage": "512GB", "specs": {"ram": "16GB", "cpu": "i7"}}', 8999);
-- 复杂查询:查找品牌是苹果且颜色是黑色的产品
SELECT name, price FROM products
WHERE JSON_EXTRACT(attributes, '$.brand') = '苹果'
AND JSON_EXTRACT(attributes, '$.color') = '黑色';
-- 嵌套查询
SELECT name, attributes->'$.specs.cpu' AS cpu
FROM products;到此这篇关于Java @Mapper 使用注解的方式注入SQL的详细过程的文章就介绍到这了,更多相关Java @Mapper 注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理
ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。下面通过本文给大家介绍Java concurrency集合之ArrayBlockingQueue的相关知识,感兴趣的朋友一起看看吧2017-06-06
SpringBoot读取Resource目录下文件的四种方式总结
在Spring Boot项目中,经常需要获取resources目录下的文件,这些文件可以包括配置文件、模板文件、静态资源等,本文将介绍四种常用的方法来获取resources目录下的文件,需要的朋友可以参考下2023-08-08


最新评论