1. 程式人生 > >老司機學習MyBatis之動態SQL使用trim自定義字串擷取

老司機學習MyBatis之動態SQL使用trim自定義字串擷取

一、前言

前面一個章節講到,如果where標籤裡面,and或者or寫在後面,最後字串拼串後,如果最後一個條件沒有加上,可能會出現SQL多出 and或者or 的情形。那我們是不是沒有辦法解決這種問題的產生,事實上MyBatis為我們提供了另外一種標籤trim,可以簡單粗暴的解決這個問題,下面我們通過案例來看看如何實現?

二、案例

我們先來看看前面使用where標籤時的情景


現在我們對上面的XML做如下改造


在EmpMapper.java檔案中增加findEmpByConditionsTrim方法

/**
* 根據部門ID查詢該部門下的所有員工資訊
* @param id
 * @return
 */
public Emp findEmpByConditionsTrim(Emp emp);

修改MybatisTest類,增加測試方法testFindEmpByConditionTrim

@Test
public void testFindEmpByConditionTrim() throws IOException {
	SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
	SqlSession openSession = sqlSessionFactory.openSession();
	try {
		EmpMapper mapper = openSession.getMapper(EmpMapper.class);
		Emp emp = new Emp(null,"queen","
[email protected]
",null); Emp empFind = mapper.findEmpByConditionsTrim(emp); System.out.println(empFind); } finally { openSession.close(); } }

測試方法,控制檯列印結果如下

2017-08-12 22:07:23,773 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpByConditionsTrim]-[DEBUG] ==>  Preparing: select id,emp_name empName,emp_email empEmail, dept_id deptId from t_emp where emp_name=? and emp_name=? 
2017-08-12 22:07:23,825 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpByConditionsTrim]-[DEBUG] ==> Parameters: queen(String), queen(String)
2017-08-12 22:07:23,865 [main] [com.queen.mybatis.mapper.EmpMapper.findEmpByConditionsTrim]-[DEBUG] <==      Total: 1
Emp [id=1, empName=queen, 
[email protected]
, deptId=1]

如上,SQL列印正常,即使拼串過程中and或者or寫在後面,也能夠實現自定義的擷取規則,大家可以試著將suffixOverrides=”and”去掉,然後測試一下,會報錯喲。

=======歡迎大家拍磚,小手一抖,多多點贊喲!=======


相關推薦

司機學習MyBatis動態SQL使用trim定義字串擷取

一、前言前面一個章節講到,如果where標籤裡面,and或者or寫在後面,最後字串拼串後,如果最後一個條件沒有加上,可能會出現SQL多出 and或者or 的情形。那我們是不是沒有辦法解決這種問題的產生,事實上MyBatis為我們提供了另外一種標籤trim,可以簡單粗暴的解決這

司機學習MyBatis一級快取原理以及失效情況

一、前言MyBatis將資料快取設計成兩級結構,分為一級快取、二級快取:一級快取是Session會話級別的快取,位於表示一次資料庫會話的SqlSession物件之中,又被稱之為本地快取。一級快取是MyBatis內部實現的一個特性,使用者不能配置,預設情況下自動支援的快取,使用

司機學習MyBatisMyBatis如何使用Map處理引數

一、前言如果多個引數不是業務模型中的資料,沒有對應的POJO,為了方便,我們直接封裝成Map傳入。#{key}取出map中對應的值。二、案例在UserMapper.java增加查詢方法findUserB

司機學習MyBatis如何使用typeAliases別名和@Alias註解

一、前言typeAliases是MyBatis中的別名處理器類,翻譯過來就是別名的意思。別名處理器的作用就是把Java型別,給它起一個簡單一點的別名,這樣我們在XML檔案中引入全類名的地方就可以使用別名

Ext4.2.1學習歷程二:定義類及類的動態載入

原文出處   http://blog.itpub.net/28562677/viewspace-1067421/ -------------------------------------------------------------- 在些extjs類的定義時有必要簡單

Android學習筆記為Dialog定義佈局,並說明空指標問題

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Zynq-Linux移植學習筆記31-使用者定義I2C驅動

1、背景介紹 板子上通過ZYNQ的I2C-0控制器連線了三片DBF晶片和一片Ti的226測功耗晶片,示意圖如下: 如上圖所示,三塊DBF晶片的I2C地址分別為2,4,8,Ti 226晶片的I2C地址為0x40.現在需要ZYNQ通過I2C匯流排讀寫這四塊晶片的暫存器數值

js學習心得js的定義事件-基於觀察者模式的實現

GOF對觀察者模式的定義:Observer的意圖是定義物件之間的一種一(被觀察者)對多(觀察者)的關係,當一個物件的狀態發生改變時,所有依賴它的物件得到通知,並且會自動更新自己。 從這段經典的定義中,可以推測下,觀察者模式中的倆個物件各自應該擁有的特徵 1,被觀察者應該可以

mybatis 動態 SQL

if mybatis _parameter _databaseid 動態 sql 1、動態 SQL 簡介: 動態 SQL 是 MyBatis 強大特性之一。極大的簡化我們拼裝 SQL 的操作。 動態 SQL 元素和使用 JSTL 或者其他類似基於 XML 的文本處理器相似。

mybatis 動態sql 增刪改查

delete ktr password test 事務回滾 tel class http ctype ====================== mybatis的動態SQL ============ ------------------------------------

Java SSM框架MyBatis3(八)MyBatis動態SQL

one uniq div mapper ODB when rop mail con 前言:   mybatis框架中最具特色的便是sql語句中的自定義,而動態sql的使用又使整個框架更加靈活。 創建User表 /*Table structure for tab

Mybatis動態SQL揭祕

今天小編在這裡為大家介紹一下Mybatis的一個強大功能-動態SQL 動態SQL是Mybatis的一個強大的特性,在使用JDBC操作資料時,如果查詢條件特別多,將條件串聯成SQL字串是一件非常痛苦的事情,通常的解決方法使寫很多的if-else條件語句去判斷和拼接,並確保不能忘了空格或在欄位的最後省略逗號。My

React學習旅----獲取定義屬性

獲取自定屬性,在小程式中可能更常用,在React中同樣也是可以獲取的,看例項 import React, { Component } from 'react'; class Event extends Component { constructor(props) { super(pr

Mybatis動態 SQL

Mybatis之動態 SQL 轉載地址:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 一、動態SQL     MyBatis 的強大特性之一便是它的動態 SQL。如果你有使用 JDBC 或其他

mybatis動態SQL操作刪除

/** * 持久層 */ public class StudentDao { /** * 動態SQL--刪除 */ public void dynaSQLwithDelete(int... ids) throws Exception{

mybatis動態SQL操作更新

1)  更新條件不確定,需要根據情況產生SQL語法,這種情況叫動態SQL /** * 持久層*/ public class StudentDao { /** * 動態SQL--更新 */ public void dynaSQLwithUpda

mybatis動態SQL操作查詢

1)  查詢條件不確定,需要根據情況產生SQL語法,這種情況叫動態SQL /** * 持久層 * @author AdminTC */ public class StudentDao { /** * 動態SQL--查詢 */ publ

少說話多寫程式碼Python學習056——標準模組(定義模組)

我們前面知道了如何匯入外部模組,比如常用的math模組, import math print(math.sin(90)) 輸出 0.8939966636005579 我們也可以自己定義一個模組,比如我的程式都在這個目錄下, 圖1 然後在當前目錄下,再建立一個MyFirstLi

MyBatis——動態SQL

MyBatis 的強大特性之一便是它的動態 SQL。如果你有使用 JDBC 或其它類似框架的經驗,你就能體會到根據不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記新增必要的空格,還要注意去掉列表最後一個列名的逗號。利用動態 SQL 這一特性可以徹底擺脫這種痛苦。

Mybatis動態sql

在mybatis中,它提供了一些動態sql標籤,可以讓程式設計師更快的進行mybatis的開發,這些動態sql可以通過sql的可重用性。。 常用的動態sql標籤:if標籤、where標籤、sql片段、foreach標籤 If標籤/where標籤 <select i