역사상 가장 간단한 MyBatis 동적 SQL 시작 예제 코드

만약 다음과 같은 책의 기본 정보에 관한 표가 있다면:

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을 사용하면 한 문장으로 완성할 수 있습니다. 예를 들어 다음과 같습니다.

<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>
동적 ql, 사용자가 필드에 대한 선택과 입력에 따라 동적 ql 실행
오프라인 도서, 약.
BookDao, 약간
Controller 전략
서비스는 다음과 같습니다.

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);
  }
}
테스트 클래스는 다음과 같습니다.

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 입문 예시 코드입니다. 여러분에게 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기