史上最簡單的MyBatis動(dòng)態(tài)SQL入門示例代碼
假如有如下的關(guān)于書籍基本信息的表:
DROP DATABASE IF EXISTS `books`;
CREATE DATABASE `books`;
USE books;
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`author` varchar(64) DEFAULT NULL,
`press` varchar(64) DEFAULT NULL,
`douban` FLOAT DEFAULT NULL,
`isbn` varchar(13) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('Java編程思想 第4版','(美)Bruce Eckel著','機(jī)械工業(yè)出版社',9.1,'9787111213826');
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('深入理解Java虛擬機(jī) JVM高級(jí)特性與最佳實(shí)踐','周志明著','機(jī)械工業(yè)出版社',8.8,'9787111421900');
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('瘋狂Java講義 第3版','李剛著','電子工業(yè)出版社',7.8,'9787121236693');
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('深入理解Java 7 核心技術(shù)與最佳實(shí)踐','成富著','機(jī)械工業(yè)出版社',6.9,'9787111380399');
用戶可能用書名、出版社、豆瓣評(píng)分、ISBN中的1~4個(gè)字段進(jìn)行查詢,如果用固定的sql語句,那么得寫C(4,1)+C(4,2)+C(4,3)+C(4,4)=4+6+4+1=15條sql和15個(gè)Dao方法
如果用動(dòng)態(tài)sql,一條語句即可完成,比如這樣:
<select id="multipSearch" parameterType="map" resultType="net.sonng.entity.Book">
SELECT * FROM book
<where>
<if test="name!=null">
name LIKE #{name}
</if>
<if test="press!=null">
AND press LIKE #{press}
</if>
<if test="douban!=null">
AND douban>=#{douban}
</if>
<if test="isbn!=null">
AND isbn=#{isbn}
</if>
</where>
</select>
動(dòng)態(tài)sql,可以根據(jù)用戶對(duì)字段選擇和輸入,動(dòng)態(tài)生成一條sql執(zhí)行
實(shí)體類Book,略。
BookDao,略
Controller略
Service如下:
package net.sonng.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import net.sonng.dao.BookDao;
import net.sonng.entity.Book;
import org.springframework.stereotype.Service;
@Service
public class TestService {
@Resource
private BookDao bookDao;
public List<Book> multipSearch(String name,String press,String douban,String isbn){
Map<String,String> map=new HashMap();
if (name!=null && !name.equals("")) {
map.put("name", "%"+name+"%");
}
if (press!=null && !press.equals("")) {
map.put("press","%"+press+"%");
}
if (douban!=null && !douban.equals("")){
map.put("douban", douban);
}
if (isbn!=null && !isbn.equals("")) {
map.put("isbn", isbn);
}
return bookDao.multipSearch(map);
}
}
測(cè)試類如下:
package net.sonng.test;
import java.util.List;
import net.sonng.controller.TestController;
import net.sonng.entity.Book;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args){
ApplicationContext ac=new ClassPathXmlApplicationContext("ac.xml");
TestController tc=ac.getBean("testController",TestController.class);//下面的4種查詢語句,都可以一條動(dòng)態(tài)SQL執(zhí)行
//List<Book> books=tc.multipSearch("Java", "", "", ""); //查詢到4條
//List<Book> books=tc.multipSearch("Java", "機(jī)械", "", ""); //3條
//List<Book> books=tc.multipSearch("Java", "機(jī)械", "8", ""); //2條
List<Book> books=tc.multipSearch("Java" ,"機(jī)械", "8", "9787111213826");//1條
for (Book book:books){
System.out.println(book.getId());
System.out.println(book.getName());
System.out.println(book.getIsbn());
System.out.println(book.getAuthor());
System.out.println(book.getPress());
System.out.println(book.getDouban());
System.out.println("----------------------------------");
}
}
}
以上所述是小編給大家介紹的史上最簡單的MyBatis動(dòng)態(tài)SQL入門示例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Mybatis 入門示例代碼之 Association
- Mybatis的入門示例代碼
- Mybatis動(dòng)態(tài)SQL之if、choose、where、set、trim、foreach標(biāo)記實(shí)例詳解
- 詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法
- MyBatis實(shí)踐之動(dòng)態(tài)SQL及關(guān)聯(lián)查詢
- oracle+mybatis 使用動(dòng)態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert
- mybatis的動(dòng)態(tài)sql詳解(精)
相關(guān)文章
web.xml?SpringBoot打包可執(zhí)行Jar運(yùn)行SpringMVC加載流程
這篇文章主要為大家介紹了web.xml?SpringBoot打包可執(zhí)行Jar運(yùn)行SpringMVC加載流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
mybatis類型轉(zhuǎn)換器如何實(shí)現(xiàn)數(shù)據(jù)加解密
這篇文章主要介紹了mybatis類型轉(zhuǎn)換器如何實(shí)現(xiàn)數(shù)據(jù)加解密,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
java中自定義Spring Security權(quán)限控制管理示例(實(shí)戰(zhàn)篇)
本篇文章主要介紹了java中自定義Spring Security權(quán)限控制管理示例(實(shí)戰(zhàn)篇) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
idea一招搞定同步所有配置(導(dǎo)入或?qū)С鏊信渲?
使用intellij idea很長一段時(shí)間,軟件相關(guān)的配置也都按照自己習(xí)慣的設(shè)置好,如果需要重裝軟件,還得需要重新設(shè)置,本文就詳細(xì)的介紹了idea 同步所有配置,感興趣的可以了解一下2021-07-07

