日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

mybatis的動(dòng)態(tài)SQL和模糊查詢實(shí)例詳解

瀏覽:252日期:2023-10-19 16:04:13

現(xiàn)在以一個(gè)例子來(lái)介紹mybatis的動(dòng)態(tài)SQL和模糊查詢:通過(guò)多條件查詢用戶記錄,條件為姓名模糊匹配,并且年齡在某兩個(gè)值之間。

新建表d_user:

create table d_user( id int primary key auto_increment, name varchar(10), age int(3)); insert into d_user(name,age) values(’Tom’,12); insert into d_user(name,age) values(’Bob’,13); insert into d_user(name,age) values(’Jack’,18);

建表成功:

mybatis的動(dòng)態(tài)SQL和模糊查詢實(shí)例詳解

新建實(shí)體類User:

public class User { private Integer id; private String name; private Integer age;//getters and setters @Override public String toString() { return 'User [id=' + id + ', name=' + name + ', age=' + age + ']'; } public User(Integer id, String name, Integer age) { super(); this.id = id; this.name = name; this.age = age; } public User() { super(); }}

創(chuàng)建查詢條件實(shí)體類ConditionUser:

public class ConditionUser { private String name; private int minAge; private int maxAge;//getters and setters public ConditionUser(String name, int minAge, int maxAge) { super(); this.name = name; this.minAge = minAge; this.maxAge = maxAge; } public ConditionUser() { super(); }}

新建映射文件userMapper.xml:

<?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.mybatis.test7.userMapper'> <select parameterType='ConditionUser' resultType='User'> SELECT * FROM d_user WHERE age &gt;= #{minAge} AND age &lt;= #{maxAge} <if test='name!=null'> AND name LIKE CONCAT(CONCAT(’%’,#{name}),’%’)</if> </select></mapper>

編寫測(cè)試類:

public class Test { private SqlSessionFactory sessionFactory; private SqlSession session; @Before public void init(){ //讀取配置文件 String resource = 'conf.xml'; InputStream is = this.getClass().getClassLoader().getResourceAsStream(resource); //創(chuàng)建SqlSessionFactory和SqlSession sessionFactory = new SqlSessionFactoryBuilder().build(is); session = sessionFactory.openSession(); } @After public void free(){ session.commit(); session.close(); } @org.junit.Test public void getUser() { String statement = 'com.mybatis.test7.userMapper'+'.getUser'; ConditionUser conditionUser = new ConditionUser('o', 13, 18); List<User> list = session.selectList(statement, conditionUser); System.out.println(list); }}

運(yùn)行結(jié)果:

mybatis的動(dòng)態(tài)SQL和模糊查詢實(shí)例詳解

注意:

1. 在配置文件中編寫sql語(yǔ)句時(shí),為防止大于號(hào)和小于號(hào)在表示大小關(guān)系和表示標(biāo)簽符號(hào)之間產(chǎn)生混淆,所以通常用&gt;和&lt;來(lái)代替sql語(yǔ)句中大于號(hào)和小于號(hào)。

2. 在SQL語(yǔ)句中添加動(dòng)態(tài)SQL標(biāo)簽if的原因是,當(dāng)在后臺(tái)獲取的name屬性值為null時(shí),防止生成where name like %null%的條件判斷語(yǔ)句,正確的邏輯應(yīng)該是,當(dāng)傳來(lái)的name屬性值為null時(shí),取消此篩選條件,即不使用where name like ?的判斷條件。在mybatis中,可用的動(dòng)態(tài)SQL標(biāo)簽有:if,choose(when,otherwise),trim(where,set),foreach。

3. 在使用模糊查詢時(shí),拼接%+#{name}+%的方法有如下幾種:

(1).像上述例子中一樣,在SQL語(yǔ)句中使用CONCAT關(guān)鍵字。

(2).使用${}代替#{}:

<?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.mybatis.test7.userMapper'> <select parameterType='ConditionUser' resultType='User'> SELECT * FROM d_user WHERE age &gt;= #{minAge} AND age &lt;= #{maxAge} <if test='name!=null'> AND name LIKE ’%${name}%’</if> </select></mapper>

注意,默認(rèn)情況下,使用#{}語(yǔ)法,MyBatis會(huì)產(chǎn)生PreparedStatement語(yǔ)句,并且安全地設(shè)置PreparedStatement參數(shù),這個(gè)過(guò)程中MyBatis會(huì)進(jìn)行必要的安全檢查和轉(zhuǎn)義。例如:

執(zhí)行SQL:select * from emp where name = #{employeeName}

參數(shù):employeeName=>Smith

解析后執(zhí)行的SQL:select * from emp where name = ?

執(zhí)行SQL:Select * from emp where name = ${employeeName}

參數(shù):employeeName傳入值為:Smith

解析后執(zhí)行的SQL:Select * from emp where name =Smith

綜上所述,${}方式可能會(huì)引發(fā)SQL注入的問(wèn)題,同時(shí)也會(huì)影響SQL語(yǔ)句的預(yù)編譯,所以從安全性和性能的角度出發(fā),應(yīng)盡量使用#{}。當(dāng)需要直接插入一個(gè)不做任何修改的字符串到SQL語(yǔ)句中,例如在ORDER BY后接一個(gè)不添加引號(hào)的值作為列名,這時(shí)候就需要使用${}。

(3).在程序中拼接。

總結(jié)

到此這篇關(guān)于mybatis的動(dòng)態(tài)SQL和模糊查詢的文章就介紹到這了,更多相關(guān)mybatis動(dòng)態(tài)SQL模糊查詢內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲最新无码中文字幕久久 | 91亚洲精品在看在线观看高清| 国产亚洲高清视频| 亚洲a级精品| 精品一区二区三区中文字幕| 日韩天堂在线| 天堂va蜜桃一区二区三区| 日本伊人久久| 岛国精品一区| 亚洲一区网站| 六月丁香综合在线视频| 亚洲第一精品影视| 日本成人在线不卡视频| 一区二区三区四区日本视频| 性色一区二区| 麻豆精品99| 红桃视频国产一区| 欧美一区在线观看视频| 91嫩草亚洲精品| 男女激情视频一区| 国产一区调教| 爽好多水快深点欧美视频| 国产欧美激情| 亚洲国内欧美| 国产日韩中文在线中文字幕| 久久影院资源站| 老鸭窝毛片一区二区三区| 麻豆精品在线观看| 日韩视频中文| 精品99在线| 一本综合精品| 黑人精品一区| 亚洲精品极品| 999久久久91| 久久av网站| 久久都是精品| 日韩在线短视频| 国产精品一区二区美女视频免费看| 91精品啪在线观看国产18| 91精品国产自产精品男人的天堂| 999精品在线| 精品色999| 日本不卡一二三区黄网| 亚洲午夜精品久久久久久app| 国产欧美日韩精品高清二区综合区 | 一区二区视频欧美| 麻豆精品新av中文字幕| 亚洲三级国产| 欧美亚洲国产激情| 精品一区二区三区在线观看视频| 中文字幕亚洲影视| 亚洲福利久久| 成人午夜网址| 欧美三级第一页| 久久成人国产| 婷婷国产精品| 久久久久久婷| 国产精品亚洲综合色区韩国| 在线一区免费| 成人精品亚洲| 欧美韩日一区| 精品中国亚洲| 国产欧美自拍| 亚洲制服欧美另类| 美女被久久久| 狠狠爱成人网| 美女网站一区| 在线一区视频观看| 91欧美日韩| 成人精品视频| 精品免费视频| 国产精品久久久久久久久免费高清 | 三级亚洲高清视频| 国产精品99免费看| 91精品一区二区三区综合在线爱| 国产精选在线| 国产一区二区三区日韩精品| 久久国产乱子精品免费女| 日韩综合一区二区| 中文字幕日韩欧美精品高清在线| 影音先锋久久| 欧美在线亚洲| 欧美精品一二| 免费欧美一区| 91久久国产| 在线成人动漫av| 国产综合精品一区| 欧美亚洲激情| 亚洲免费成人| 国产精品婷婷| 亚洲一区二区网站| 老牛国产精品一区的观看方式| 免费国产自久久久久三四区久久 | 国产欧美日韩亚洲一区二区三区| 欧美日韩一区二区三区不卡视频| 日韩精品三级| 欧美亚洲免费| 欧美精品aa| 免费日韩一区二区三区| 久久免费精品| 国产a久久精品一区二区三区| 91亚洲国产成人久久精品| 亚洲成人一区在线观看| 激情丁香综合| 天堂va蜜桃一区二区三区| 水蜜桃久久夜色精品一区的特点| 亚洲精品第一| 人人爱人人干婷婷丁香亚洲| 国产日韩欧美一区在线| 免费在线日韩av| 国产美女高潮在线观看| 99久久婷婷| 久久成人一区| 日韩av一区二区三区四区| 国产精品一区二区免费福利视频| 精品三级av| 99视频精品全国免费| 香蕉成人久久| 日韩av午夜在线观看| 国产高清日韩| 成人午夜亚洲| 蜜臀91精品国产高清在线观看| 日韩精品一区第一页| 日本aⅴ亚洲精品中文乱码| 国产欧美啪啪| av综合电影网站| 午夜免费一区| 日韩一区二区三免费高清在线观看| 国产美女精品视频免费播放软件| 精品国产乱码久久久| 成人久久久久| 亚洲婷婷丁香| 欧美a一区二区| 99热国内精品| 日韩高清一区二区| 久久只有精品| 欧美另类综合| 久久精品97| 日韩免费小视频| 亚洲精品视频一二三区| 久久久久九九精品影院| 99久久亚洲精品| 日本欧美一区二区| 国产成人精品亚洲线观看| 不卡中文字幕| 91精品国产经典在线观看| 亚洲天堂av影院| 在线精品国产亚洲| 美女av一区| 亚洲一区观看| 久久久亚洲欧洲日产| 蜜桃视频欧美| 免费视频一区二区三区在线观看| 亚洲大全视频| 国产精品magnet| 一区在线免费| 久久精品女人| 免费黄网站欧美| 91亚洲国产高清| 日韩高清在线观看一区二区| 久久精品影视| 国产精品久久久亚洲一区| 在线综合视频| 成人在线免费观看91| 美女国产精品| 国产精品黑丝在线播放| 爽好多水快深点欧美视频| 成人综合一区| 亚洲+小说+欧美+激情+另类| 日韩毛片视频| 久久国产精品免费一区二区三区| 不卡av一区二区| 丰满少妇一区| 欧美一级二级视频| 亚洲精华国产欧美| 丝袜诱惑一区二区| 国产女人18毛片水真多18精品| 国产一区导航| 日韩精品麻豆| 美女视频网站久久| 亚洲男女自偷自拍| 国产一区二区三区四区| 日韩欧美在线精品| 欧美高清一区| аⅴ资源天堂资源库在线| 欧美精品国产一区| 老色鬼久久亚洲一区二区| 蜜桃精品在线| 麻豆国产一区| 日韩和欧美的一区| 夜夜嗨一区二区三区| 免费看av不卡| 麻豆精品在线观看| 久久国内精品| 亚洲三级在线| 国产一区91| 亚洲视频综合| 中文字幕在线官网| 久久精品资源| 久久精品99国产国产精|