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

您的位置:首頁技術文章
文章詳情頁

mybatis的動態SQL和模糊查詢實例詳解

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

現在以一個例子來介紹mybatis的動態SQL和模糊查詢:通過多條件查詢用戶記錄,條件為姓名模糊匹配,并且年齡在某兩個值之間。

新建表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的動態SQL和模糊查詢實例詳解

新建實體類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(); }}

創建查詢條件實體類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>

編寫測試類:

public class Test { private SqlSessionFactory sessionFactory; private SqlSession session; @Before public void init(){ //讀取配置文件 String resource = 'conf.xml'; InputStream is = this.getClass().getClassLoader().getResourceAsStream(resource); //創建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); }}

運行結果:

mybatis的動態SQL和模糊查詢實例詳解

注意:

1. 在配置文件中編寫sql語句時,為防止大于號和小于號在表示大小關系和表示標簽符號之間產生混淆,所以通常用&gt;和&lt;來代替sql語句中大于號和小于號。

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

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

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

(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>

注意,默認情況下,使用#{}語法,MyBatis會產生PreparedStatement語句,并且安全地設置PreparedStatement參數,這個過程中MyBatis會進行必要的安全檢查和轉義。例如:

執行SQL:select * from emp where name = #{employeeName}

參數:employeeName=>Smith

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

執行SQL:Select * from emp where name = ${employeeName}

參數:employeeName傳入值為:Smith

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

綜上所述,${}方式可能會引發SQL注入的問題,同時也會影響SQL語句的預編譯,所以從安全性和性能的角度出發,應盡量使用#{}。當需要直接插入一個不做任何修改的字符串到SQL語句中,例如在ORDER BY后接一個不添加引號的值作為列名,這時候就需要使用${}。

(3).在程序中拼接。

總結

到此這篇關于mybatis的動態SQL和模糊查詢的文章就介紹到這了,更多相關mybatis動態SQL模糊查詢內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲最新无码中文字幕久久| 日韩欧美四区| 日精品一区二区三区| 国产手机视频一区二区| 欧美/亚洲一区| 性欧美69xoxoxoxo| 青青青免费在线视频| 91亚洲一区| 日韩欧美一区免费| 久久中文字幕av| 午夜国产一区二区| 国产农村妇女精品一二区| 国产亚洲亚洲| 亚洲人成网77777色在线播放| 日韩专区欧美专区| 免费一区二区三区在线视频| 精品视频一区二区三区在线观看| 国产在线日韩精品| 中文字幕在线视频久| 黄色在线网站噜噜噜| 91一区二区三区四区| 亚洲精品一区三区三区在线观看| 国产精品99视频| 欧美日韩尤物久久| 日韩一区二区免费看| 亚洲一区二区三区免费在线观看| 男女性色大片免费观看一区二区 | 国产精品欧美一区二区三区不卡| 精品日韩一区| 精品国模一区二区三区| 亚州av乱码久久精品蜜桃| 亚洲福利精品| 免费不卡中文字幕在线| 亚洲一卡久久| 日本午夜精品一区二区三区电影 | 日本亚洲最大的色成网站www| 欧美一区二区三区久久| 免费看一区二区三区| 麻豆网站免费在线观看| 黄色不卡一区| 日韩国产成人精品| 国产一区二区色噜噜| 日韩理论视频| 久久久天天操| 免费成人性网站| 国产欧美一区二区色老头| 黄色网一区二区| 影视先锋久久| 日韩精品亚洲专区| 波多野结衣一区| 日韩高清不卡在线| yellow在线观看网址| 久久福利一区| 久久天堂影院| 亚洲永久字幕| 欧美精品1区| 91久久中文| 久久影院资源站| 99久久久久久中文字幕一区| 石原莉奈在线亚洲三区| 久久成人高清| 欧美另类专区| 麻豆精品视频在线观看免费| 成人av动漫在线观看| 国产精品一区二区av日韩在线| 99精品一区| 日韩高清成人在线| 99久久激情| 欧美精品国产白浆久久久久| 91精品国产福利在线观看麻豆| 亚洲精品日本| 成人日韩精品| 欧美日韩夜夜| 中文字幕系列一区| 国产精品资源| 亚洲婷婷丁香| 日本韩国欧美超级黄在线观看| 日韩av午夜在线观看| 精品一区在线| 精品网站aaa| 日本 国产 欧美色综合| av免费不卡国产观看| 日本视频中文字幕一区二区三区| 欧美日韩一区二区综合| 久久av偷拍| 亚洲欧美在线综合| 99久精品视频在线观看视频| 久久国产人妖系列| 91精品啪在线观看国产18| 国产精品久久777777毛茸茸| 日韩一级不卡| 精精国产xxxx视频在线播放| 国产美女久久| 日韩精品一二三区| 久久精品青草| 老司机精品视频在线播放| 丝袜美腿一区二区三区| 亚洲永久av| 久久爱www成人| 日韩精品免费视频人成| 夜夜嗨网站十八久久| 日韩精品不卡一区二区| 国产精品毛片视频| 日本大胆欧美人术艺术动态| 欧美性感美女一区二区| 国产成人调教视频在线观看| 88久久精品| 亚洲精品少妇| 亚洲欧美久久久| 婷婷中文字幕一区| 亚洲韩日在线| 成人看片网站| 成人日韩在线| 精品一级视频| 欧美国产日韩电影| 久久国产日韩欧美精品| 蜜臀av亚洲一区中文字幕| 国产视频一区免费看| 91一区二区| 超碰99在线| 国产第一亚洲| 国产一区二区三区91| 免费看久久久| 免费视频一区二区三区在线观看 | 久久不见久久见免费视频7| 97精品久久| 91成人在线精品视频| 青草综合视频| 国产精品成人国产| 国产午夜久久av| 国产精品www994| 欧美三区不卡| 国产精品传媒麻豆hd| 国产精品xxx在线观看| 久久99免费视频| 久久精品国产网站| 国产不卡av一区二区| 福利视频一区| 日韩免费在线| 激情婷婷欧美| 日韩网站在线| 免费看日韩精品| 婷婷视频一区二区三区| 亚洲精选91| 国产精品一区二区精品视频观看 | 四虎国产精品免费久久| 蜜桃视频第一区免费观看| 亚洲精品影视| 国产精品伊人| 久久91视频| 欧美日韩免费看片| 美女网站一区| 久久香蕉精品| 欧美日本三区| 国产aⅴ精品一区二区三区久久 | 精品伊人久久久| 日韩精品不卡一区二区| 欧美一级精品| 亚洲精品欧洲| 日韩国产高清在线| 国产在线观看91一区二区三区| 伊人久久视频| 黄色日韩在线| 日韩精彩视频在线观看| 美女视频黄免费的久久| 欧美亚洲日本精品| 亚洲综合三区| 国产精品一级| 在线人成日本视频| 激情五月色综合国产精品| 中文字幕亚洲在线观看| 久久精品福利| 国产二区精品| 欧美日一区二区三区在线观看国产免 | 久久99久久久精品欧美| 日韩综合精品| 午夜在线视频一区二区区别| 国产无遮挡裸体免费久久| 成人一区而且| 久久午夜视频| 精品美女在线视频| 99riav1国产精品视频| 亚洲精品影视| 天堂av在线| 中文字幕中文字幕精品| 精品国产亚洲日本| 夜夜嗨av一区二区三区网站四季av| 日韩欧美2区| 日韩免费看片| 亚州av日韩av| 欧美日韩免费观看视频| 视频一区日韩| 极品av在线| 日韩三级久久| 99久久www免费| 国产欧美日韩一级| 欧美亚洲激情| 日本不卡视频在线观看| 丁香六月综合| 国产亚洲人成a在线v网站|