1. 程式人生 > >DAO,如何實現模糊查詢

DAO,如何實現模糊查詢

定義一個DAO

public class DAO<T> {
	
	private QueryRunner queryRunner = new QueryRunner();
	
	private Class<T> clazz;

	public DAO(){
		Type superClass = getClass().getGenericSuperclass();
		
		if(superClass instanceof ParameterizedType){
			ParameterizedType parameterizedType = (ParameterizedType) superClass;
			
			Type[] typeArgs = parameterizedType.getActualTypeArguments();
			
			if(typeArgs != null && typeArgs.length>0){
				if(typeArgs[0] instanceof Class){
					clazz = (Class<T>) typeArgs[0];
				}
			}
		}
	}
	
	
	/**
	 * 查詢T 對應的List 
	 * 返回對應的T 所對應的List
	 * @param sql
	 * @param args
	 * @return
	 */
	public List<T> getForList(String sql,Object...args){
		Connection connection = null;
		
		try {
			connection = JdbcUtils.getConnection();
			return queryRunner.query(connection, sql, new BeanListHandler<T>(clazz), args);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JdbcUtils.releaseConnection(connection);
		}
		
		return null;
	}
}

定義一個介面CustomerDAO
public interface CustomerDAO {
	
	public List<Customer> getForListWithCCustomer(CCustomer cc);
	
	/**
	 * 返回一個list
	 * @return
	 */
	public List<Customer> getAll();
	
}

定義一個類
public class CCustomer {
	private String name;
	private String address;
	private String phone;
	
	public CCustomer(String name, String address, String phone) {
		super();
		this.name = name;
		this.address = address;
		this.phone = phone;
	}

	public String getName() {
		//實現  名字  的模糊查詢
		if(name == null){
			name ="%%";
		}else{
			name ="%"+ name +"%";
		}
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		//實現  地址  的模糊查
		if(address == null){
			address ="%%";
		}else{
			address ="%"+ address +"%";
		}
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPhone() {
		//實現  電話號碼 的模糊查
		if(phone == null){
			phone ="%%";
		}else{
			phone ="%"+ phone +"%";
		}
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}
}

定義一個繼承了DAO 且實現了CustomerDAO 的類
public class CustomerDAOJdbcImpl extends DAO<Customer> implements CustomerDAO{

	@Override
	public List<Customer> getForListWithCCustomer(CCustomer cc) {
		String sql  = "SELECT id,name,address,phone FROM customerss "
				+ "WHERE name LIKE ? AND address LIKE ? AND phone LIKE ?";
		return getForList(sql,cc.getName(),cc.getAddress(),cc.getPhone());
	}

	@Override
	public List<Customer> getAll() {
		String sql  = "SELECT id,name,address,phone FROM customerss";
		return getForList(sql);
	}
}


相關推薦

DAO,如何實現模糊查詢

定義一個DAO public class DAO<T> { private QueryRunner queryRunner = new QueryRunner(); priv

如何結合IbatisNet的LIST遍歷實現模糊查詢

mov earch home 輔助 iba pda person list() rate 我仿照Java的Spring+Ibatis+Struct用Castle+IBatisNet+Asp.net的開發框架的DAO的基類:BaseSqlMapDao內定義了一個內部類來輔助模

實現模糊查詢

根據 def art 所有 cnblogs sse 建立 prop bsp QureyFind的find按鈕中when-button—pressed 進行字符串的拼接 在Controller塊中建立一個item,將其長度屬性改的大一些。、 QureyFind的fin

10 行 Python 代碼實現模糊查詢/智能提示

import 3.5 django title gif function 項目 正則表達 裏的 10 行 Python 代碼實現模糊查詢/智能提示 1、導語: 模糊匹配可以算是現代編輯器(如 Eclipse 等各種 IDE)的一個必備特性了,它所做的就是根據用戶輸入

潤乾報表實現模糊查詢

技術 潤乾 com 潤乾報表 png 技術分享 alt log .cn 潤乾報表實現模糊查詢

Mybatis實現模糊查詢

con concat 框架 color SSM框架 數據庫 sql ble table 在使用SSM框架實現後臺功能的過程中,有可能需要對數據庫中的某一個字段實現模糊搜索,使用sql語句就是: SELECT * FROM [TABLE NAME] WHERE u_name

【轉】pymongo實現模糊查詢

python article 匹配 light net details regex 使用 模糊匹配 pymongo 模糊匹配查詢在mongo中這樣實現 {‘asr‘:/若琪/}    使用pymongo 兩種實現方式 1.import re

list集合實現模糊查詢的工具類

public class FuzzyQueryUtils {     public static List fuzzyQuery (String name,List list){         List fu

JS如何實現模糊查詢

所謂模糊查詢就是列表中的資料是否有符合關鍵字或某個字元。 實現的操作方法主要有兩種: 1.字串方法indexOf:         程式碼如下:         var list = ["中國", "

前端獨立實現模糊查詢--filter()與match()

filter()方法和match()方法結合使用可以使前端已獲取資料的情況下獨立實現模糊查詢,不再呼叫後端介面,這種情況適用與查詢次數比較多,且資料比較固定的情況,減少呼叫後端介面一定程度上可以緩解後端壓力。 示例: teacherList = allTeacherList.f

MyBatis實現模糊查詢的三種方式

1.使用sql中的字串拼接函式 <mapper namespace="com.baidu.book.mapper.BookMapper"> <select id="getBook" parameterType="Book" resultType="Bo

SQL實現 模糊查詢(轉)

在進行資料庫查詢時,有完整查詢和模糊查詢之分。 一般模糊查詢語句如下: SELECT 欄位 FROM 表 WHERE 某欄位 Like 條件 其中關於條件,SQL提供了四種匹配模式: 1,% :表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文

tp5 實現 模糊查詢

$search 是 獲取的使用者想要搜尋的資料名字 1 第一種方法,不能實現模糊查詢,必須輸入匹配的精確的名字 // 現在的 查詢好像不是模糊查詢 ,應該是 精確的名字 // $where['biaoqian_name'] = array('like',$search); /

java利用classfier4j實現模糊查詢、文章摘要、餘弦相似度、Tfidf、單詞糾正

jar包下載: https://download.csdn.net/download/dreamzuora/10853888 程式碼使用: 餘弦相似度: Double result=cosSimilarityByString("關於王立軍,有幾個基本事實。首先,1月28日我是初次

iBatis 中 Like 的寫法實現模糊查詢

也就是如上的 like 語義在 person.xml中應該怎麼表述呢?我曾經是想當然的嘗試把 (name like #name#) 寫成    (name like '%#name#%')    或 (name like %#name#%) ,都沒法通過,分別報錯 java.sql.SQLException:

Trie樹(字典樹)_實現模糊查詢(支援中文)

一、什麼是Trie樹 Trie書又名字典樹,字典是由一組片語成的集合,而字典樹對這個集合進行了結構化的組織,將字典用另一種表達方式進行了表達。 首先字典書對一些具有公共字首的詞進行了“壓縮”,大大減小了它佔用的空間。同時對於字典內詞的字首檢索也十分迅速,下面看一個圖來理解下字典樹: 上面的圖就是字典樹,字

trie樹實現模糊查詢

        在上一篇部落格裡簡單的說了一下標準trie樹的建立,本來說要做一個小型詞典來用試試,結果這段時間有事就一直耽誤到現在,今天抽了一點時間看看,首先我想到的是在我們輸入某些單詞的前面幾個字母的時候下面的提示,那是trie樹的模糊查詢,便想了想去實現這個功能。  

MyBatis實現模糊查詢的三種方法

模糊查詢也是資料庫SQL中使用頻率很高的SQL語句,使用MyBatis來進行更加靈活的模糊查詢。 直接傳參法 直接傳參法,就是將要查詢的關鍵字keyword,在程式碼中拼接好要查詢的格式,如%keyword%,然後直接作為引數傳入mapper.xml的對映檔案中。在查詢前

spring boot中使用註解實現模糊查詢

//模糊查詢(根據姓名和登記日期模糊查詢所有資料) @Select({"select * from putong_rencai where concat(name,dengji_time

node實現模糊查詢

倉庫地址 app.js const express = require('express'); // const bodyparser = require('body-parser'); const mysql = require('mysql'); const app = express(