您好,登錄后才能下訂單哦!
這篇文章主要講解了“Tk.mybatis零sql語句實現動態sql查詢的方法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Tk.mybatis零sql語句實現動態sql查詢的方法有哪些”吧!
有時候,查詢數據需要根據條件使用動態查詢,這時候需要使用動態sql,通常我們會自己寫動態sql來實現,比如:
<select id="findStudentByCondition" resultType="com.example.service.entity.Student"> SELECT id, name, score FROM tbl_student <where> <if test="score !=null and score > 0"> score > #{score} </if> <if test="name !=null and name != ''"> <bind name="pattern" value=" '%' + name + '%' "/> AND name LIKE #{pattern} </if> </where> ORDER BY score DESc </select>
這個sql是查詢成績大于90并且名字包含“i”的學生信息。但是有時候又加了一個條件,又要去改sql,改入參,有沒有一種方式可以將寫動態sql像寫代碼一樣實現呢?如果你有這個想法,推薦你了解一下Tk.mybatis。
1. 使用Example實現
2. 使用Example.createCriteria
3. 使用Example.builder實現
4. 使用WeekendSqls實現
/** * 第一種:使用example查詢 */ @Test public void testSelectByExample() { Example example = new Example(Student.class); // 設置查詢列 example.selectProperties("id","name","score"); // 動態sql example.and() .andGreaterThan("score",90) .andLike("name", "%i%"); // 去重 example.setDistinct(true); // 排序 example.orderBy("score").desc(); List<Student> students = studentMapper.selectByExample(example); System.out.println(students); }
/** * 第二種:使用example.createCriteria查詢 */ @Test public void testSelectByExampleCriteria() { Example example = new Example(Student.class); // 設置查詢列 example.selectProperties("id","name","score"); // 動態查詢 example.createCriteria() .andGreaterThan("score",90) .andLike("name", "%i%"); // 去重 example.setDistinct(true); // 排序 example.orderBy("score").desc(); List<Student> students = studentMapper.selectByExample(example); System.out.println(students); }
/** * 第三種:使用Example.builder實現 */ @Test public void testSelectByExampleBuilder() { Example example = Example.builder(Student.class) // 查詢列 .select("id","name","score") // 動態sql .where(Sqls.custom() .andGreaterThan("score",90) .andLike("name","%i%")) // 去重 .distinct() // 排序 .orderByDesc("score") .build(); List<Student> students = studentMapper.selectByExample(example); System.out.println(students); }
/** * 第四種:使用weekendSqls實現 */ @Test public void testSelectByWeekendSqls() { WeekendSqls<Student> sqls = WeekendSqls.custom(); sqls = sqls .andGreaterThan(Student::getScore,90) .andLike(Student::getName,"%i%"); List<Student> sysRoles = studentMapper.selectByExample(Example.builder(Student.class) .select("id","name","score") .where(sqls) .distinct() .orderByDesc("score") .build()); System.out.println(sysRoles); }
感謝各位的閱讀,以上就是“Tk.mybatis零sql語句實現動態sql查詢的方法有哪些”的內容了,經過本文的學習后,相信大家對Tk.mybatis零sql語句實現動態sql查詢的方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。