mybatis?plus中如何編寫(xiě)sql語(yǔ)句
sql語(yǔ)句是寫(xiě)在對(duì)應(yīng)的xml文件中
首先要解決maven默認(rèn)不加載xml文件的問(wèn)題
1.首先要寫(xiě)入相關(guān)配置文件
在pom 導(dǎo)入下面內(nèi)容
?<build> ? ? ? ? <resources> ? ? ? ? ? ? <resource> ? ? ? ? ? ? ? ? <directory>src/main/java</directory> ? ? ? ? ? ? ? ? <includes> ? ? ? ? ? ? ? ? ? ? <include>**/*.xml</include> ? ? ? ? ? ? ? ? </includes> ? ? ? ? ? ? </resource> ? ? ? ? ? ? <resource> ? ? ? ? ? ? ? ? <directory>src/main/resources</directory> ? ? ? ? ? ? </resource> ? ? ? ? </resources> ? ? </build>
在application中寫(xiě)入如下內(nèi)容
mybatis-plus: ? mapper-locations: classpath*:**/xml/*.xml
2.在對(duì)應(yīng)的serviceimpl中調(diào)用baseMapper 接口
應(yīng)為在mybatis plus 中對(duì)應(yīng)的serviceImpl 接口繼承自對(duì)應(yīng)的mapper接口,mapper接口又繼承自baseMapper 接口。
比如說(shuō)
baseMapper.countRegisterDay(day)
3.在mapper文件中編寫(xiě)對(duì)應(yīng)的接口
?Integer countRegisterDay(String day);
4.在對(duì)應(yīng)的xml 中編寫(xiě)sql語(yǔ)句
id 為方法的名字。resultType 為方法返回的類(lèi)型
<?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">
<mapper namespace="com.boshrong.ucentor.mapper.UcenterMemberMapper">
? ? <select id="countRegisterDay" resultType="java.lang.Integer">
? ? ? ? select count(*) from ucenter_member um where DATE (um.gmt_create)=#{day}
? ? </select>
</mapper>注意若傳入的值有多個(gè)參數(shù)怎么解決?
比如說(shuō)方法為
?Integer countRegisterDay(String day,String time1);
sql 中獲取多個(gè)值的方法可以有兩種
1.方法一 ,通過(guò)索引獲取
#{0} 獲取day的值, #{1} 獲取time1的值2.方法二, 通過(guò)@Param獲取
Integer countRegisterDay(@Param ("aa")String day,@Param ("bb")String time1);- #{aa},#{bb} 獲取
- #{} 與 ${} 的區(qū)別
- #{} 是預(yù)編譯處理,是占位符。 Mybatis 在處理 #{} 時(shí),會(huì)將sql 中的#{} 替換成?號(hào),調(diào)用PreparedStatement 來(lái)賦值。
- ${} 是字符串替換,是拼接符。就是會(huì)將 KaTeX parse error: Expected 'EOF', got '#' at position 30: …Statement 來(lái)賦值。 #?方式能夠很大程度防止sql注入…方式。
mybatis plus sql語(yǔ)句集合
獲取數(shù)據(jù)庫(kù)中某個(gè)varchar字段的最大值
max(CONVERT(stat_date,UNSIGNED))
日期格式轉(zhuǎn)換
DATE_FORMAT(update_time,‘%Y-%m-%d %T')
字符串拼接
concat(#{year},‘Y')查詢年份的當(dāng)前年份的后面一年
DATE_FORMAT(DATE_SUB(CURDATE(),interval -1 year),‘%Y')
查詢獲取當(dāng)前年份
DATE_FORMAT(CURDATE(),‘%Y')
left,right函數(shù)返回args最左邊、右邊的length個(gè)字符串
right(args, 2)
當(dāng)前日期的前三個(gè)月日期
pay_time <![CDATA[<]]> now() - INTERVAL 3 MONTH AND now()
截取某一個(gè)字段中以某個(gè)字符開(kāi)始截取
- 以從后面開(kāi)始第一個(gè)橫杠為分割截取
SUBSTRING_INDEX( dep_name, ‘-',- 1 ) depName
- 以第一個(gè)橫杠為分割截取
SUBSTRING_INDEX( dep_name, ‘-',1 ) depName
IFNULL() 函數(shù)
IFNULL(expression, alt_value)如果第一個(gè)參數(shù)的表達(dá)式 expression 為 NULL,則返回第二個(gè)參數(shù)的備用值。
- 返回列表中的最大值
GREATEST(expr1, expr2, expr3, …)
- 返回列表中的最小值
LEAST(expr1, expr2, expr3, …)
- 計(jì)算日期 d1->d2 之間相隔的天數(shù)
DATEDIFF(d1,d2)
- 如果表達(dá)式 expr 成立,返回結(jié)果 v1;否則,返回結(jié)果 v2。
IF(expr,v1,v2)
find_in_set(str,strlist)
find_in_set判斷是否包含某個(gè)字符串str要查詢的字符串strlist字段名 參數(shù)以”,”分隔 如 (1,2,6,8,10,22)- 匹配個(gè)字段是否為純數(shù)字 0為匹配純數(shù)字 1為匹配不是純數(shù)字
AND (TRIM(str) REGEXP ‘[^0-9.]') = 0
- 將字符串轉(zhuǎn)換為int數(shù)字類(lèi)型
CAST(right(yearmth, 2) AS SIGNED)
- 動(dòng)態(tài)獲取數(shù)據(jù)庫(kù)某個(gè)字段來(lái)作為條件
FIND_IN_SET (year_id,(SELECT GROUP_CONCAT(DISTINCT LEFT(字段, 4)) from table))
locate()函數(shù)
locate(subStr,string):函數(shù)返回subStr在string中出現(xiàn)的位置- 只要找到返回的結(jié)果都大于0(即使是查詢的內(nèi)容就是最開(kāi)始部分),沒(méi)有查找到才返回0;
// 如果字符串 string 包含 subStr locate(subStr,string) > 0 // 如果字符串 string 不包含 subStr locate(subStr,string) = 0
locate()函數(shù)實(shí)現(xiàn)模糊查詢
select * from user where locate('王',name)
假如現(xiàn)在需求是找出所有名字中含有王,但是不姓王的人找出來(lái),我們用下面那種實(shí)現(xiàn)方式如下:
select * from user where locate('王',name,2)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中MapStruct映射處理器報(bào)錯(cuò)的問(wèn)題解決
MapStruct是一個(gè)強(qiáng)大的Java映射框架,它能夠在編譯時(shí)生成映射代碼,,本文主要介紹了Java中MapStruct映射處理器報(bào)錯(cuò)的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Java利用位運(yùn)算實(shí)現(xiàn)乘法運(yùn)算詳解
這篇文章主要為大家詳細(xì)介紹了Java如何用位運(yùn)算實(shí)現(xiàn)乘法運(yùn)算,在實(shí)現(xiàn)乘法時(shí)要用位運(yùn)算實(shí)現(xiàn),并且不能出現(xiàn)加減乘除任何符號(hào),感興趣的可以了解一下2023-04-04
IDEA Maven下載依賴包速度過(guò)慢的問(wèn)題及解決方案
這篇文章主要介紹了IDEA Maven下載依賴包速度過(guò)慢的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Spring之什么是ObjectFactory?什么是ObjectProvider?
這篇文章主要介紹了Spring之什么是ObjectFactory?什么是ObjectProvider?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Java 中文字符按Unicode排序的實(shí)現(xiàn)方法
這篇文章主要介紹了Java 中文字符按Unicode排序的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10
java實(shí)現(xiàn)一個(gè)掃描包的工具類(lèi)實(shí)例代碼
很多框架,比如springmvc,mybatis等使用注解,為了處理注解,必然要對(duì)包進(jìn)行掃描,所以下面這篇文章主要給大家分享介紹了關(guān)于利用java如何實(shí)現(xiàn)一個(gè)掃描包的工具類(lèi),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-10-10
踩坑之spring事務(wù),非事務(wù)方法與事務(wù)方法執(zhí)行相互調(diào)用方式
這篇文章主要介紹了踩坑之spring事務(wù),非事務(wù)方法與事務(wù)方法執(zhí)行相互調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

