有时候,查询数据需要根据条件使用动态查询,这时候需要使用动态sql,通常我们会自己写动态sql来实现,比如:
<lect id="findstudentbycondition" resulttype="com.example.rvice.entity.student"> lect 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 </lect>
这个sql是查询成绩大于90并且名字包含“i”的学生信息。但是有时候又加了一个条件,又要去改sql,改入参,有没有一种方式可以将写动态sql像写代码一样实现呢?如果你有这个想法,推荐你了解一下tk.mybatis。
关于tk.mybatis的介绍以及如何配置,本文暂不介绍,不了解的请自行百度艳成语,本文只介绍如何基于tk.mybatis实现不写sql语句也能实现动态sql查询。
1. 使用example实现
2. 使用example.createcriteria
3. 使用example.builder实现
4. 使用weekendsqls实现
/** * 第一种:使用example查询 */ @test public void testlectbyexample() { example example = new example(student.class); // 设置查询列 example.lectproperties("id","name","score"); // 动态sql example.and() .andgreaterthan("score",90) .andlike("name", "%i%"); // 去重 example.tdistinct(true); // 排序 example.orderby("score").desc(); list<student> students = studentmapper.lectbyexample(example); system.out.println(students); }
/** * 第二种:使用example.createcriteria查询 */ @test public void testlectbyexamplecriteria() { example example = new example(student.class); // 设置查询列 example.lectproperties("id","name","score"); // 动态查询 example.createcriteria() .andgreaterthan("score",90) .andlike("name", "%i%"); // 去重 example.tdistinct(true); // 排序 example.orderby("score").desc(); list<student> students = studentmapper.lectbyexample(example); system.out.println(students); }
/** * 第三种:使用example.builder实现 */ @test public void testlectbyexamplebuilder() { example example = example.builder(student.class) // 查询列 .lect("id","name","score") // 动态sql .where(sqls.custom() .andgreaterthan("score",90) .andlike("name","%i%")) // 去重 .distinct() // 排序 .orderbydesc("score") .build(); list<student> students = studentmapper.lectbyexample(example); system.out.println(students); }
/** * 第四种:使用weekendsqls实现 */ @test public void testlectbyweekendsqls() { weekendsqls<student> sqls = weekendsqls.custom(); sqls = sqls .andgreaterthan(student::getscore,90) .andlike(student::getname,"%i%"); list<student> sysroles = studentmapper.星星lectbyexample(example.builder(student.class) .lect("id","name","score") .where(sqls) .distinct() .orderbydesc("score") .build()); system.out.pri2017年清明节放假安排ntln(sysroles); }
到此这篇关于tk.mybatis零sql语句实现动态sql查询的方法(4种)的文章就介绍到这了,更多相关tk.mybatis 动态sql查询内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-03 23:47:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/2dfb5c97b182ffa9c3e0b44bb36f123c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Tk.mybatis零sql语句实现动态sql查询的方法(4种).doc
本文 PDF 下载地址:Tk.mybatis零sql语句实现动态sql查询的方法(4种).pdf
留言与评论(共有 0 条评论) |