十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关Mybatis中如何实现动态SQL,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
庆安网站建设公司成都创新互联,庆安网站设计制作,有大型网站制作公司丰富经验。已为庆安1000多家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的庆安做网站的公司定做!
二、动态SQL
1、 IF 标签
在Product.xml中
在TestIF.java中
System.out.println("查询所有的"); Listps = session.selectList("listProduct"); for (Product p : ps) { System.out.println(p); } System.out.println("模糊查询"); Map params = new HashMap<>(); params.put("name","a"); List ps2 = session.selectList("listProductByName",params); for (Product p : ps2) { System.out.println(p); }
2、WHERE SET TRIM 标签
(1)WHERE标签
如果要进行多条件判断,可能会出现select * from product_ and price > 10 的矛盾
这个问题可以通过
如果任何条件都不成立,那么就在sql语句里就不会出现where关键字
如果有任何条件成立,会自动去掉多出来的 and 或者 or。
(2)SET标签
与where标签类似的,在update语句里也会碰到多个字段相关的问题。 在这种情况下,就可以使用set标签
name=#{name}, price=#{price}
(3)TRIM标签,用来定制想要的功能
比如:替换where标签
...
替换set标签
...
3、CHOOSE WHEN OTHERWISE 标签
(1)Mybatis里面没有else标签,但是可以使用when otherwise标签来达到这样的效果。
在Product.xml中
其作用是: 提供了任何条件,就进行条件查询,否则就使用id>1这个条件。
4、FOREACH 标签,通常用于in 这样的语法里.
如例,如图查询出id等于1,3,5的数据出来。
在Product.xml中
在TestForeach.java中
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Product; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); Listids = new ArrayList(); ids.add(1); ids.add(3); ids.add(5); List ps = session.selectList("listProduct",ids); for (Product p : ps) { System.out.println(p); } session.commit(); session.close(); } }
5、bind标签
bind标签就像是再做一次字符串拼接,方便后续使用
如本例,在模糊查询的基础上,把模糊查询改为bind标签。
在Product.xml中
在TestMybatis.java中
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Product; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); Mapparams =new HashMap(); params.put("name", "product"); List ps = session.selectList("listProduct",params); for (Product p : ps) { System.out.println(p); } session.commit(); session.close(); } }
上述就是小编为大家分享的Mybatis中如何实现动态SQL了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。