446、Java框架100 -【MyBatis - if】 2020.12.23
目錄
0、執行不同的條件限定,需要準備兩條sql語句
假設需要對Product執行兩條sql語句,一個是查詢所有,一個是根據名稱模糊查詢。
那麼按照現在的方式,必須提供兩條sql語句:listProduct和listProductByName
然後在呼叫的時候,分別呼叫它們來執行。
- Product.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.how2java.pojo">
<select id="listProduct" resultType="Product">
select * from product_
</select>
<select id="listProductByName" resultType="Product">
select * from product_ where name like concat('%',#{name},'%')
</select>
</mapper>
- 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();
System.out.println("查詢所有的");
List<Product> ps = session.selectList("listProduct");
for (Product p : ps) {
System.out.println(p);
}
System.out.println("模糊查詢");
Map<String,Object> params = new HashMap<>();
params.put("name","a");
List<Product> ps2 = session.selectList("listProductByName",params);
for (Product p : ps2) {
System.out.println(p);
}
session.commit();
session.close();
}
}
1、if標籤
如果Product的欄位比較多的話,為了應付各個欄位的查詢,那麼就需要寫多條sql語句,這樣就變得難以維護。
這個時候,就可以使用Mybatis 動態SQL裡的if標籤
<select id="listProduct" resultType="Product">
select * from product_
<if test="name!=null">
where name like concat('%',#{name},'%')
</if>
</select>
如果沒有傳引數name,那麼就查詢所有,如果有name引數,那麼就進行模糊查詢。
這樣只需要定義一條sql語句即可應付多種情況了,在測試的時候,也只需要呼叫這麼一條sql語句listProduct 即可。
- Product.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.how2java.pojo">
<select id="listProduct" resultType="Product">
select * from product_
<if test="name!=null">
where name like concat('%',#{name},'%')
</if>
</select>
</mapper>
- 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();
System.out.println("查詢所有的");
List<Product> ps = session.selectList("listProduct");
for (Product p : ps) {
System.out.println(p);
}
System.out.println("模糊查詢");
Map<String,Object> params = new HashMap<>();
params.put("name","a");
List<Product> ps2 = session.selectList("listProduct",params);
for (Product p : ps2) {
System.out.println(p);
}
session.commit();
session.close();
}
}
2、參考連結
相關文章
- java框架之mybatisJava框架MyBatis
- Java Mybatis 框架入門教程JavaMyBatis框架
- Java 持久層框架之 MyBatisJava框架MyBatis
- Java持久層框架Mybatis入門Java框架MyBatis
- Java EE--框架篇(3-1)MybatisJava框架MyBatis
- Mybatis框架MyBatis框架
- 框架系列——MyBatis框架MyBatis
- java框架整合Springmvc+mybatis+shiro+lucene+rest+webservice+mavenJava框架SpringMVCMyBatisRESTWebMaven
- 手寫mybatis框架MyBatis框架
- 初識MyBatis框架MyBatis框架
- 快速搭建MyBatis 框架MyBatis框架
- 忙中偷閒 2020.12.23日記
- Java程式設計——如何用Maven搭建SpringMVC+Spring+MyBatis框架Java程式設計MavenSpringMVCMyBatis框架
- Mybatis框架基礎-03MyBatis框架
- MyBatis框架原理3:快取MyBatis框架快取
- 搭建 Spring+SpringMVC+MyBatis 框架SpringMVCMyBatis框架
- Mybatis框架 入門學習MyBatis框架
- Spring+SpringMVC+MyBatis框架整合SpringMVCMyBatis框架
- BAT 面試 Java 崗常問高頻 100 題:Spring+ 微服務 +SpringMVC+MyBatis面試Java微服務SpringMVCMyBatis
- MyBatis-Pro,新一代的MyBatis增強框架MyBatis框架
- MyBatis框架介紹及其實操MyBatis框架
- springboot整合mybatis自動生成框架Spring BootMyBatis框架
- MyBatis 框架之快速入門程式MyBatis框架
- mybatis系列第1篇:框架原理MyBatis框架
- 手寫自己的MyBatis框架-SqlSessionMyBatis框架SQLSession
- Java SSM springmvc spring mybatis 集程式碼生成器 後臺框架原始碼JavaSSMSpringMVCMyBatis框架原始碼
- Java開發工程師最新面試題庫系列——Mybatis框架部分(附答案)Java工程師面試題MyBatis框架
- 【springboot】【java】【MySQL】【mybatis】【db】mybatis初體驗Spring BootJavaMySqlMyBatis
- java面試-mybatis篇Java面試MyBatis
- MyBatis 框架系列之基礎初識MyBatis框架
- MyBatis--優秀的持久層框架MyBatis框架
- Springboot整合mybatis框架(含例項Demo)Spring BootMyBatis框架
- Mybatis和其他主流框架的整合使用MyBatis框架
- MyBatis框架介紹及實戰操作MyBatis框架
- [轉載] 快速學習-Mybatis框架概述MyBatis框架
- Spring框架(五)實戰Spring整合MybatisSpring框架MyBatis
- 淺析MyBatis(二):手寫一個自己的MyBatis簡單框架MyBatis框架
- Java中“100=100”為true,而"1000=1000"為false?JavaFalse