一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 史上最簡單的MyBatis動態SQL入門示例代碼

史上最簡單的MyBatis動態SQL入門示例代碼

2020-09-01 09:40sonng Java教程

動態sql,可以根據用戶對字段選擇和輸入,動態生成一條sql執行。接下來通過本文給大家分享MyBatis動態SQL入門示例代碼,一起看看吧

假如有如下的關于書籍基本信息的表:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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著','機械工業出版社',9.1,'9787111213826');
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('深入理解Java虛擬機 JVM高級特性與最佳實踐','周志明著','機械工業出版社',8.8,'9787111421900');
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('瘋狂Java講義 第3版','李剛著','電子工業出版社',7.8,'9787121236693');
INSERT INTO `book` (`name`,`author`,`press`,`douban`,`isbn`) VALUES('深入理解Java 7 核心技術與最佳實踐','成富著','機械工業出版社',6.9,'9787111380399');

用戶可能用書名、出版社、豆瓣評分、ISBN中的1~4個字段進行查詢,如果用固定的sql語句,那么得寫C(4,1)+C(4,2)+C(4,3)+C(4,4)=4+6+4+1=15條sql和15個Dao方法

如果用動態sql,一條語句即可完成,比如這樣:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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>

動態sql,可以根據用戶對字段選擇和輸入,動態生成一條sql執行

實體類Book,略。

BookDao,略

Controller略

Service如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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);
  }
}

測試類如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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種查詢語句,都可以一條動態SQL執行
    //List<Book> books=tc.multipSearch("Java", "", "", "");        //查詢到4條
    //List<Book> books=tc.multipSearch("Java", "機械", "", "");      //3條
    //List<Book> books=tc.multipSearch("Java", "機械", "8", "");      //2條
    List<Book> books=tc.multipSearch("Java" ,"機械", "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動態SQL入門示例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/sonng/archive/2017/03/23/6604135.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男女男精品网站免费观看 | 51精品| 四虎在线永久视频观看 | 色777777女人色 | 99久久精品免费观看区一 | 操一操影院 | 国产欧美一区二区三区免费 | 久久精品小视频 | 王淑兰与铁柱全文免费阅读 | 午夜香蕉成视频人网站高清版 | 欧美人做人爱a全程免费 | hd最新国产人妖ts视频 | 日本韩国在线 | 亚洲人成在线播放 | 性色生活片在线观看 | 5555国产在线观看精品 | 亚洲精品欧洲久久婷婷99 | 国产欧美亚洲精品第一页青草 | 欧美xxxxx69 | 免费观看日本人成影片 | 亚洲成在人线视频 | 女教师雪白老汉 | 不知火舞被c视频在线播放 不卡一区二区三区卡 | 国产欧美另类久久精品91 | 亚洲福利在线观看 | 疯狂刺激的3p国产在线 | 99热99在线| 亚洲精品123区在线观看 | 亚洲国产精品第一区二区三区 | 高清国产欧美一v精品 | 亚洲高清一区二区三区四区 | 男男视频18免费网站 | 菠萝视频5正版在线观看 | 国产亚洲精品一区二区在线观看 | 五月色婷婷网在线观看 | 被强迫调教的高辣小说 | 久久99国产精品二区不卡 | 青青草成人在线 | 国产亚洲精aa在线观看不卡 | 久久精品熟女亚洲AV国产 | yellow高清免费观看日本 |