Java?@Mapper?使用注解的方式注入SQL的詳細(xì)過(guò)程
MySQL 的 JSON 數(shù)據(jù)類型(從 MySQL 5.7.8 開(kāi)始支持)允許你在表中存儲(chǔ)和處理 JSON 格式的數(shù)據(jù)。
JSON 數(shù)據(jù)類型提供了靈活性,但應(yīng)謹(jǐn)慎使用。對(duì)于需要復(fù)雜查詢、索引或關(guān)系約束的數(shù)據(jù),傳統(tǒng)的關(guān)系表結(jié)構(gòu)通常是更好的選擇。
mysql中in語(yǔ)句的處理。
一、例如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);二、遇到數(shù)據(jù)類為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, #工時(shí)
t3.yye04,#項(xiàng)目
t3.comSubCategoryCode #月份
FROM bill_main t1
LEFT JOIN bill_main_data t2 ON t1.id = t2.id
LEFT join (
SELECT
t.id,#單據(jù)號(hào)
jt.hj_value, #工時(shí)
jt.yye04,#項(xiàng)目
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, #工時(shí)
t3.yye04,#項(xiàng)目
t3.comSubCategoryCode #月份
FROM bill_main t1
LEFT JOIN bill_main_data t2 ON t1.id = t2.id
LEFT join (
SELECT
t.id,#單據(jù)號(hào)
jt.hj_value, #工時(shí)
jt.yye04,#項(xiàng)目
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 數(shù)據(jù)類型的使用示例
-- 創(chuàng)建電商商品表
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
attributes JSON,
price DECIMAL(10,2)
);
-- 插入商品數(shù)據(jù)
INSERT INTO products VALUES
(1, '手機(jī)', '{"brand": "蘋(píng)果", "color": "黑色", "storage": "128GB", "specs": {"ram": "4GB", "cpu": "A15"}}', 6999),
(2, '筆記本', '{"brand": "戴爾", "color": "銀色", "storage": "512GB", "specs": {"ram": "16GB", "cpu": "i7"}}', 8999);
-- 復(fù)雜查詢:查找品牌是蘋(píng)果且顏色是黑色的產(chǎn)品
SELECT name, price FROM products
WHERE JSON_EXTRACT(attributes, '$.brand') = '蘋(píng)果'
AND JSON_EXTRACT(attributes, '$.color') = '黑色';
-- 嵌套查詢
SELECT name, attributes->'$.specs.cpu' AS cpu
FROM products;到此這篇關(guān)于Java @Mapper 使用注解的方式注入SQL的詳細(xì)過(guò)程的文章就介紹到這了,更多相關(guān)Java @Mapper 注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java語(yǔ)言簡(jiǎn)介(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
Java是一門(mén)面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征,下面通過(guò)本文給大家分享java語(yǔ)言的簡(jiǎn)介,感興趣的朋友一起看看吧2017-03-03
如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回
這篇文章主要介紹了如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
解決Maven 項(xiàng)目報(bào)錯(cuò) java.httpservlet和synchronized使用方法
下面小編就為大家?guī)?lái)一篇解決Maven 項(xiàng)目報(bào)錯(cuò) java.httpservlet和synchronized使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Spring Security OAuth2 token權(quán)限隔離實(shí)例解析
這篇文章主要介紹了Spring Security OAuth2 token權(quán)限隔離實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringBoot基于配置實(shí)現(xiàn)短信服務(wù)策略的動(dòng)態(tài)切換
這篇文章主要為大家詳細(xì)介紹了SpringBoot在接入多個(gè)短信服務(wù)商(如阿里云、騰訊云、華為云)后,如何根據(jù)配置或環(huán)境切換使用不同的服務(wù)商,需要的小伙伴可以了解下2025-04-04

