国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【問題記錄】IDEA Mybatis *Mapper.xml 中 sql 無提示、無高亮、格式化失效問題 (已解決)

這篇具有很好參考價(jià)值的文章主要介紹了【問題記錄】IDEA Mybatis *Mapper.xml 中 sql 無提示、無高亮、格式化失效問題 (已解決)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

問題
先說版本,win 11,idea 2023.1
如標(biāo)題,想去格式化mybatis中寫的sql,但是ctrl alt L 一頓處理,其中的sql沒有按照sql命令的格式去格式化,此外寫sql 無提示也無高亮
問題示例
未格式化前,顯然格式已經(jīng)差不多了,按理來說再格式化也就稍微調(diào)整

<select id="selectxx" resultType="java.util.HashMap">
		SELECT * from (SELECT p.project_code projectCode,
					 p.project_name projectName,
					 (SELECT count(*)
					  FROM table_os os
					  where os.project_code = p.project_code
						and os.del_flag = '0'
		<if test="query.saleCode!='' and query.saleCode!=null ">
			and os.sale_code like concat('%',#{query.saleCode},'%')
		</if>
		) as size
		FROM table_p p
		where p.del_flag='0'

		<if test="query.projectType!='' and query.projectType!=null">
			and p.project_type like concat('%',#{query.projectType},'%')
		</if>

		<if test="query.projectCode!='' and query.projectCode!=null">
			and p.project_code like concat('%',#{query.projectCode},'%')
		</if>

		<if test="query.projectName!='' and query.projectName!=null">
			and p.project_name like concat('%',#{query.projectName},'%')
		</if>
		) as php
		where size > 0
		order by size desc
	</select>

但格式化的結(jié)果是這樣,顯然sql的格式不對(duì):

<select id="selectxx" resultType="java.util.HashMap">
		SELECT * from (SELECT p.project_code projectCode,
		p.project_name projectName,
		(SELECT count(*)
		FROM table_os os
		where os.project_code = p.project_code
		and os.del_flag = '0'
		<if test="query.saleCode!='' and query.saleCode!=null ">
			and os.sale_code like concat('%',#{query.saleCode},'%')
		</if>
		) as size
		FROM table_p p
		where p.del_flag='0'

		<if test="query.projectType!='' and query.projectType!=null">
			and p.project_type like concat('%',#{query.projectType},'%')
		</if>

		<if test="query.projectCode!='' and query.projectCode!=null">
			and p.project_code like concat('%',#{query.projectCode},'%')
		</if>

		<if test="query.projectName!='' and query.projectName!=null">
			and p.project_name like concat('%',#{query.projectName},'%')
		</if>
		) as php
		where size > 0
		order by size desc
	</select>

【半解決】
不能叫解決,只能說解決了一半。
先百度了一下,搜出來大多數(shù)解決方案都差不多,如下

  • 設(shè)置 → 語言方案 → sql方言 → 設(shè)為mysql(或其他 你用的數(shù)據(jù)庫)
  • Database中配置MySQL的數(shù)據(jù)源

這兩種方法試了都不行。在思否 這里 找到了一個(gè),也就是半解決的方案,簡(jiǎn)要來說就是

  1. 選中sql代碼
  2. 右鍵 → 顯示上下文 → 注入語言或引用 → 在彈框中點(diǎn)選mysql或sql(或你的其他數(shù)據(jù)庫)(其實(shí)可以搜索,雖然沒有搜索框,但是默認(rèn)取焦點(diǎn),直接輸入就可以搜索)
  3. 此時(shí)sql的高亮已經(jīng)顯示成功,再次格式化,發(fā)現(xiàn)sql格式化成功,如果你的idea連接了數(shù)據(jù)庫,那么此時(shí)是可以有比如說select等關(guān)鍵字、表字段之類的聯(lián)想提示

其他方法就是插件,見【后話】

【解決示例】
這里是思否那個(gè)的例子,只是貼出來
原代碼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace跟接口綁定-->
<mapper namespace="com.sunyard.monitor.dao.FlowMapper">
    <select id="queryFlowNum" resultType="com.sunyard.monitor.domain.Flow">
   select * from(select count(1) as flowNum from ccform_debit_all where cf_acctime > to_char(sysdate,'yyyy-MM-dd'))cross join(select count(1) as flowNumMonth from ccform_debit_all where cf_acctime > to_char(sysdate,'yyyy-MM')) cross join (select count(1) as flowNumTotal from ccform_debit_all where cf_acctime > to_char(sysdate,'yyyy'))
  </select>
</mapper>

其中的sql格式化以后

select *
		from (select count(1) as flowNum
			  from ccform_debit_all
			  where cf_acctime >
					to_char(sysdate, 'yyyy-MM-dd'))
				 cross join(select count(1) as flowNumMonth
							from ccform_debit_all
							where cf_acctime
									  > to_char(sysdate, 'yyyy-MM'))
				 cross join (select count(1) as flowNumTotal
							 from ccform_debit_all
							 where cf_acctime
									   > to_char(sysdate, 'yyyy'))

【后話】
大家估計(jì)也知道為什么說是半解決了,因?yàn)樗@個(gè)辦法還是代碼塊級(jí)或者文件級(jí)別,要一個(gè)個(gè)操作,不是很方便,還是想要一個(gè)一勞永逸的。還有語言注入其實(shí)是臨時(shí)的,重啟idea就會(huì)消失,那就更雞肋了,而且只能純sql,對(duì)于像我的示例中這樣,又包含sql又包括mybatis的語法的,比如<if>這樣的到那就隔斷了,<if>是不會(huì)被視為sql的,那么
要么寫一個(gè)純sql要么純mybatis語法(其實(shí)這樣還合理一點(diǎn),但是這接手的二開,原來的就是混雜的),又或者手敲格式可能還更簡(jiǎn)單。

其實(shí)我還試過那個(gè),就是idea 的插件,比如 SQLFormatter 之類的,那個(gè)也可以滿足要求,但是問題比語言注入還多,缺點(diǎn)全都有而優(yōu)點(diǎn)可以忽略,還不如打開一個(gè)sql控制臺(tái)復(fù)制粘貼,所以還是放棄了。

如果有其他更好的辦法,大家可以在評(píng)論分享一下,十分歡迎

2023.11.19更

雖然不是什么大問題,但看著膈應(yīng),差點(diǎn)就重裝idea了,最后掙扎一次,幸好是解決了。

【過程】

  1. 想重裝idea(差點(diǎn),一上來肯定不能那么極端)
  2. (文件 → 管理ide設(shè)置 → 還原默認(rèn)設(shè)置)(這時(shí)候會(huì)提示備份設(shè)置,當(dāng)然也可以自己提前備份(文件 → 管理ide設(shè)置 → 導(dǎo)出設(shè)置))→ 重啟
  3. 再打開項(xiàng)目,配置下jdk和maven,發(fā)現(xiàn)此次高亮沒任何問題!
  4. 可知,不是代碼問題。而就是配置問題,但配置由前面內(nèi)容可知,都試過了,也不該有任何問題
  5. 嘗試插件檢查(為什么呢,因?yàn)槲蚁肫饋砦襥dea太重,有搜過相關(guān)內(nèi)容,把idea部分用不上(自認(rèn)為)的插件禁用了)

【解決】
插件檢查不再贅述,總之最后找到了問題,是XpathView + XSLT 這個(gè)插件被我禁用所導(dǎo)致的!
idea mybatis格式化,問題記錄,mybatis,xml,sql,intellij idea,ide
將其啟用,正常了,mybatis xml有了高亮、格式化也正常了、關(guān)鍵字如select、where等也有了提示,表名、字段名也有了提示(需idea配置數(shù)據(jù)源)
最后,把idea的配置再導(dǎo)入就好了,過程很煩,但此事終告一段落,開心。

放一下圖:
idea mybatis格式化,問題記錄,mybatis,xml,sql,intellij idea,ide
如果還是不行,建議全部檢查一下:

  1. 插件:Database Tools and SQL、XpathView + XSLT 、MyBatisCodeHelperPro 或者MyBatisX
  2. 設(shè)置:配置sql方言
  3. 數(shù)據(jù)源:配置數(shù)據(jù)庫連接,選擇架構(gòu)(使用的數(shù)據(jù)庫)

如果還是不行,也可以像我一樣,清空設(shè)置,看看是不是idea本來就顯示不了。如果是,那可能是idea版本問題了,我的版本是2023.1文章來源地址http://www.zghlxwxcb.cn/news/detail-758126.html

到了這里,關(guān)于【問題記錄】IDEA Mybatis *Mapper.xml 中 sql 無提示、無高亮、格式化失效問題 (已解決)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • IDEA->EasyCode(mapper.xml) 字段無逗號(hào)分割問題

    IDEA->EasyCode(mapper.xml) 字段無逗號(hào)分割問題

    easycode 安裝使用,出現(xiàn)一下問題: 所有字段沒有逗號(hào)分割。 github查看解決方法如下: 在easycode的設(shè)置里找到: 1、Template下的? mapper.xml.vm腳本 2、 Global Config下的 mybatisSupport.vm腳本 然后將這兩個(gè)腳本里的 $velocityHasNext 替換成 $foreach.hasNext ,然后保存設(shè)置。之后新生成的mapper

    2024年04月10日
    瀏覽(21)
  • idea寫sql語句快捷鍵提醒,mapper注解開發(fā),mybatis

    idea寫sql語句快捷鍵提醒,mapper注解開發(fā),mybatis

    第一步:注入SQL語言 1.顯示上下文操作(沒有這個(gè)選項(xiàng)的話就選中sql然后直接alt+回車快捷鍵) 2.注入語言或引用 3.mysql 第二步:配置MySQL數(shù)據(jù)庫連接 1.首先點(diǎn)擊側(cè)邊的數(shù)據(jù)庫,再點(diǎn)擊上面的加號(hào) 2.點(diǎn)擊數(shù)據(jù)源,然后找到MySQL并點(diǎn)擊 3.配置數(shù)據(jù)庫信息(填寫賬號(hào)密碼后點(diǎn)擊測(cè)試

    2024年01月16日
    瀏覽(18)
  • sql中的時(shí)間范圍查詢【三種方式】以及Mapper.xml中遇到大于號(hào)小于號(hào)問題解決方案

    mapper注意事項(xiàng) 字符 轉(zhuǎn)義字符 描述 gt; 大于 = gt;= 大于等于 lt; 小于 = lt;= 小于等于 \\\" quot; 雙引號(hào) ’ apos; 單引號(hào) amp; and 遇到問題: 從數(shù)據(jù)庫獲取時(shí)間傳到前端進(jìn)行展示的時(shí)候,我們有時(shí)候可能無法得到一個(gè)滿意的時(shí)間格式的時(shí)間日期,在數(shù)據(jù)庫中顯示的是正確的時(shí)間格式,獲

    2024年02月10日
    瀏覽(22)
  • IDEA全局設(shè)置MyBatis中寫SQL語句提示

    IDEA全局設(shè)置MyBatis中寫SQL語句提示

    第一步:把這兩個(gè)設(shè)置改成MySQL即可: ? 第二步:找到設(shè)置=編輯器=語言注入=店家加號(hào),選擇MySQL?

    2024年02月13日
    瀏覽(20)
  • Mybatis|mapper配置文件xml位置

    Mybatis|mapper配置文件xml位置

    在核心配置文件mybatis-config.xml中設(shè)置映射文件位置 application.yml文件中添加配置: mybatis案例中和springboot中都是一樣的,只要目錄名和包名相同 需要在pom.xml中添加如下內(nèi)容 越努力,越幸運(yùn)! codefishyyf與你一起努力!

    2024年02月06日
    瀏覽(25)
  • (MVC)SpringBoot+Mybatis+Mapper.xml

    (MVC)SpringBoot+Mybatis+Mapper.xml

    前言:本篇博客主要對(duì)MVC架構(gòu)、Mybatis工程加深下理解,前面寫過一篇博客:SprintBoot+html/css/js+mybatis的demo,里面涉及到了Mybatis的應(yīng)用,此篇博客主要介紹一種將sql語句寫到了配置文件里的方法,即Mybatis里Mapper.xml文件配置,其主要用于定義sql語句和映射關(guān)系 目錄 MVC架構(gòu)流程圖

    2024年02月13日
    瀏覽(43)
  • Mybatis mapper.xml 判斷條件寫法注意

    1.判斷String是否為空 if?test=\\\"stringParam != null and?stringParam?!= \\\'\\\'\\\"/if 2.判斷Integer是否大于0 判斷等于? when test=\\\"item.mark == 1\\\"\\\" 3.判斷List是否不為空 5.判斷字符串是否等于特定字符(比如此處的user)

    2024年02月16日
    瀏覽(31)
  • 深入實(shí)現(xiàn) MyBatis 底層機(jī)制的任務(wù)階段4 - 開發(fā) Mapper 接口和 Mapper.xml

    深入實(shí)現(xiàn) MyBatis 底層機(jī)制的任務(wù)階段4 - 開發(fā) Mapper 接口和 Mapper.xml

    ??前言 在我們的自定義 MyBatis 底層機(jī)制實(shí)現(xiàn)過程中,我們已經(jīng)深入研究了多個(gè)任務(wù)階段,包括配置文件的讀取、數(shù)據(jù)庫連接的建立、執(zhí)行器的編寫,以及 SqlSession 的封裝。每個(gè)任務(wù)階段都為我們揭示了 MyBatis 內(nèi)部工作原理的一部分,為構(gòu)建完整的底層框架打下了堅(jiān)實(shí)的基礎(chǔ)

    2024年02月09日
    瀏覽(22)
  • MyBatis - DAO 接口(Mapper.xml)支持方法重載嗎?

    方法重載(Method Overloading)是指在同一個(gè)類中定義多個(gè)方法,它們具有相同的方法名但參數(shù)列表不同。 在 MyBatis 的 DAO 層接口中, 是允許方法重載的。 在 DAO 層接口中,可以根據(jù)不同的需求和條件定義多個(gè)方法,提供不同的查詢或操作方式。 在 MyBatis 的 XML 映射文件中, 是

    2024年01月17日
    瀏覽(47)
  • mybatis中的mapper.xml中如何使用in方法

    mybatis中的mapper.xml中如何使用in方法

    提示:mapper.xml中如何使用in方法一般都是like或= 提示:使用foreach 注意,傳入的參數(shù)是List ,如果傳入的是array 則需要修改 collection部分定義為 collection=“array” 在MyBatis中使用in參數(shù)為集合時(shí),需要使用到foreach標(biāo)簽。 下面詳細(xì)介紹以下foreach標(biāo)簽的幾個(gè)參數(shù)

    2024年02月15日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包