1. 程式人生 > >Mybatis 多條件查詢(模糊查詢 使用in查詢)

Mybatis 多條件查詢(模糊查詢 使用in查詢)

Mybatis支援多個條件的查詢,使用if標籤拼接。

下面是三個條件的查詢得例子,使用的資料庫是mysql,用到了模糊查詢及in做條件查詢。

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="">
	<select id="selectTeacher" parameterType="map" resultType="map">
		select t.tid,t.tname,t.taddr
		from test_teacher t
		where 1=1
		<if test="tid != '' and tid != null">
			and tid=#{tid}
		</if>
		<if test="tname != '' and tname != null">
			and tname like #{tname}
		</if>
		<if test="addrs != '' and addrs != null">
			and taddr in
			<foreach item="item" index="index" collection="addrs" open="("
				separator="," close=")">
				#{item}
			</foreach>
		</if>

	</select>


</mapper>


dao層:

package mybatis.dao;

import java.util.List;

public interface TestTeacherDao {
	public List selectTeacher(String tid,String tname,List addrs);
}

package mybatis.dao;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class TestTeacherDaoImpl implements TestTeacherDao {
	private int res=-1;
	private SqlSession sqlSession=null;
	public  SqlSession getSqlSession(){
		
		try{
			String resource="mybatis-config.xml";
			InputStream is=org.apache.ibatis.io.Resources.getResourceAsStream(resource);
			SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
			sqlSession=sqlSessionFactory.openSession(true);
			
			
		}catch(Exception e){
			System.out.println("出錯");
			e.printStackTrace();
		}
		return sqlSession;
	}
	@Override
	public List selectTeacher(String tid,String tname,List addrs) {
		Map map=new HashMap();
		map.put("tid", tid);
		map.put("tname", "%"+tname+"%");
		map.put("addrs",addrs);

		sqlSession=getSqlSession();
		List list=sqlSession.selectList("selectTeacher", map);
		return list;
	}

}

測試:
package mybatis.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import mybatis.dao.TestTeacherDao;
import mybatis.dao.TestTeacherDaoImpl;

public class Test {

	public static void main(String[] args) {
		TestTeacherDao td=new TestTeacherDaoImpl();
		List addrs=new ArrayList();
		addrs.add("shandong");
		addrs.add("beijing");
		List list=td.selectTeacher("", "",addrs);
		for(int i=0;i<list.size();i++){
			Map map=(Map)(list.get(i));					
			System.out.println(map.get("tname"));
		}
	}

}


相關推薦

Mybatis 條件查詢模糊查詢 使用in查詢

Mybatis支援多個條件的查詢,使用if標籤拼接。 下面是三個條件的查詢得例子,使用的資料庫是mysql,用到了模糊查詢及in做條件查詢。 xml檔案: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE

使用mybatis的動態sql來完成 SQL 條件組合查詢模糊查詢

對於一般的模糊查詢,沒有使用框架的連結部落格地址:點選這裡 對於mybatis,框架內部欸出了處理方式,即使用mybatis的內建標籤和OGNL表示式 mybatis在select,update,delete,insert等標籤中加入了 if choose (when, ot

mybatis條件模糊查詢

<select id="selectUserList" parameterType="cn.vipkes.dao.dto.param.UserListDto" resultType="cn.vip

mybatis條件查詢,動態sql,模糊查詢

mapper.xml中:<select id="selectShareByName" resultMap="seeShare"> SELECT * FROM Diary <where> <!

mybatis 條件查詢

Controller:    AccountBean accountBean=new AccountBean(); accountBean.setAccount_id(Integer.parseInt(id));

MyBatis條件分頁查詢,返回總記錄數

 <!-- 通過多條件分頁查詢,返回總記錄數 -->   <select id="selectPageCount" parameterType="page" resultType="

SpringBoot jpa條件查詢引數可能為空語句

@Query(value = "select * from xxx where if(?1 !='',x1=?1,1=1) and if(?2 !='',x2=?2,1=1)" + "and if(?3 !='',x3=?3,1=1) ",nativ

hibernate實現條件組合的模糊查詢

主要程式碼: @Transactional public List<Items> queryitems(int id, String name, String city, String price) { String hql="from Items it

MyBatis條件查詢

DAO: List<LimitApply> selectInformationByOptions(Map<String, Object> map ); MAPPER:

ssh:hql動態查詢+條件自由拼接+模糊查詢

@Override public List<Book> getByInfo(String name, String author, String publisher) { Session session=

精確查詢模糊查詢檔名、字串等

                                            字串查詢常用於搜尋檔案,查詢檔名,今天用到了就來聊聊關於字串的精確查詢與模糊查詢: 1.精確查詢:          精確查詢常用於檔名相似,或者字尾名相似的檔案,如.ali檔案.

MySQL之連線查詢查詢適合練習和初學

Join連線圖 針對以上的多表查詢,我們嘗試做以下的實驗: Join實驗: CREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT

TP3.2分頁第二頁帶查詢條件顯示兩種解決辦法

先看看手冊的....然而怎麼都不行,最後給成GET模式 直接ok帶入查詢條件如果是POST方式查詢,如何確保分頁之後能夠保持原先的查詢條件呢,我們可以給分頁類傳入引數,方法是給分頁類的parameter屬性賦值$count = $User->where($ma

SQL SERVER簡單的增,刪,查,改 語句 表關聯查詢 去掉關鍵列查詢

insert into tb_UserInfo values('趙六',3,13512458679); --增加語句-- update tb_UserInfo set name='劉德華'where id=3; --修改語句-- delete from tb

用list集合做條件中含日期範圍的查詢例項

  private DataTable Query()         {             string sql = @"select * from sccld_view  where 1=1 ";             StringBuilder sb = new StringBuilder(sq

Hive 連線查詢操作不支援IN查詢

CREATE EXTERNAL TABLE IF NOT EXISTS a( telno STRING, other STRING ) PARTITIONED BY(day String) ROW FORMAT DELIMITED FIELDS TERMINATED

SQL Server中的模糊查詢搜尋時經常使用

零、碼仙勵志 只有不想做的,沒有做不到的 一、建庫和建表 create database scort use scort create table emp ( empno int primary key, ename nvarchar(10), age int )

JPA條件複雜SQL動態分頁查詢

概述   ORM對映為我們帶來便利的同時,也失去了較大靈活性,如果SQL較複雜,要進行動態查詢,那必定是一件頭疼的事情(也可能是lz還沒發現好的方法),記錄下自己用的三種複雜查詢方式。 環境 springBoot IDEA2017.3.4 JDK8 pom.xml <?xml vers

elastic search6.2.2 實現用戶搜索記錄查詢去重、排序

replicas pos 結果 etime rep col cas rms idt elastic search6.2.2 實現搜索記錄查詢 ,類似新浪微博這種,同樣的搜索記錄後面時間點的會覆蓋前面的(主要思路:關鍵詞去重,然後按時間排序) 先創建索引 //我的搜索

Hibernate查詢HQL——Hibernate Query Language

增加 exceptio 連接查詢 有一個 子句 內容 ike 例子 範圍 HQL查詢   HQL提供了是十分強大的功能,它是針對持久化對象,用取得對象,而不進行update,delete和insert等操作。而且HQL是面向對象的,具備繼承,多態和關聯等特性。 from子句