zoukankan      html  css  js  c++  java
  • SSM-MyBatis-14:Mybatis中智能标签

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

    谈论到智能,有什么要想的没有?

    我下面放张图

     

    相信都见过这个吧,你在之前没有学习过框架的时候怎么写的,动态sql?还是。。。

    智能标签可以解决类似问题

    它可以在sql语句中随传入参数是否为null甚至其他来自行加where或者and,或者其他等等用法

    他分为 where ,if ,choose ,foreach的array方式 ,foreach的list方式 ,foreach的list自定义类型方式

    我一块放在下面,对照着看吧

    实体类

    public class Book {
        private Integer bookID;
        private String bookName;
        private String bookAuthor;
        private Integer bookPrice;
    
        public Book() {
        }
    
        public Integer getBookID() {
            return this.bookID;
        }
    
        public void setBookID(Integer bookID) {
            this.bookID = bookID;
        }
    
        public String getBookName() {
            return this.bookName;
        }
    
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
    
        public String getBookAuthor() {
            return this.bookAuthor;
        }
    
        public void setBookAuthor(String bookAuthor) {
            this.bookAuthor = bookAuthor;
        }
    
        public Integer getBookPrice() {
            return this.bookPrice;
        }
    
        public void setBookPrice(Integer bookPrice) {
            this.bookPrice = bookPrice;
        }
    }

    接口中的方法

    //智能标签where if
        public List<Book> findtrueBookByIf(String bookName,Integer bookPrice);
        //智能标签where choose
        public List<Book> findtrueBookByChoose(Integer bookPrice);
        //智能标签where foreach array
        public List<Book> findtrueBookByForeachArray(int [] array);
        //智能标签where foreach list
        public List<Book> findtrueBookByForeachList(List<Integer> list);
        //智能标签where foreach list
        public List<Book> findtrueBookByForeachListBook(List<Book> list);

    小配置中

    <!--智能标签,where if-->
        <select id="findtrueBookByIf" resultType="Book">
            select * from book
            <where>
                <if test="#{0}!=null">
                    AND bookName LIKE '%' #{0} '%'
                </if>
                <if test="#{0}!=null">
                    AND bookPrice>#{1}
                </if>
            </where>
        </select>
        <!--智能标签,where choose-->
        <select id="findtrueBookByChoose" resultType="Book">
            select * from book
            <where>
                <choose>
                    <when test="#{0}!=null">
                        AND bookPrice>#{0}
                    </when>
                    <otherwise>1=1</otherwise>
                </choose>
            </where>
        </select>
        <!--智能标签,where foreach array-->
        <select id="findtrueBookByForeachArray" resultType="Book">
            select * from book
            <where>
                bookID IN 
                <foreach collection="array" open="(" close=")" separator="," item="myid">
                    #{myid}
                </foreach>
            </where>
        </select>
        <!--智能标签,where foreach list-->
        <select id="findtrueBookByForeachList" resultType="Book">
            select * from book
            <where>
                bookID IN
                <foreach collection="list" open="(" close=")" separator="," item="myid">
                    #{myid}
                </foreach>
            </where>
        </select>
        <!--智能标签,where foreach list book-->
        <select id="findtrueBookByForeachListBook" resultType="Book">
            select * from book
            <where>
                bookID IN
                <foreach collection="list" open="(" close=")" separator="," item="book">
                    #{book.bookID}
                </foreach>
            </where>
        </select>

    测试类中

    ///智能标签where + foreach list Book自定义list 进行多条件查询
        @Test
        public void t9selectZhiNengByForeachListBook(){
            SqlSession session= MyBatisUtils.getSession();
    
            IBookDAO mapper = session.getMapper(IBookDAO.class);
            List<Book> list=new ArrayList<Book>();
            Book b1=new Book();
            b1.setBookID(1);
            Book b2=new Book();
            b2.setBookID(2);
            list.add(b1);
            list.add(b2);
            List<Book> books = mapper.findtrueBookByForeachListBook(list);
            for (Book items:books) {
                System.out.println(items.getBookName());
            }
    
            session.close();
    
        }
    
    
        ///智能标签where + foreach list 进行多条件查询
        @Test
        public void t8selectZhiNengByForeachList(){
            SqlSession session= MyBatisUtils.getSession();
    
            IBookDAO mapper = session.getMapper(IBookDAO.class);
            List<Integer> list=new ArrayList<Integer>();
            list.add(1);
            list.add(3);
            List<Book> books = mapper.findtrueBookByForeachList(list);
            for (Book items:books) {
                System.out.println(items.getBookName());
            }
    
            session.close();
    
        }
    
    
        ///智能标签where + foreach array 进行多条件查询
        @Test
        public void t7selectZhiNengByForeachArray(){
            SqlSession session= MyBatisUtils.getSession();
    
            IBookDAO mapper = session.getMapper(IBookDAO.class);
            int[] array={1,3};
            List<Book> books = mapper.findtrueBookByForeachArray(array);
            for (Book items:books) {
                System.out.println(items.getBookName());
            }
    
            session.close();
    
        }
    
    
    
        ///智能标签where + choose进行多条件查询
        @Test
        public void t6selectZhiNengByChoose(){
            SqlSession session= MyBatisUtils.getSession();
    
            IBookDAO mapper = session.getMapper(IBookDAO.class);
            List<Book> books = mapper.findtrueBookByChoose(500);
            for (Book items:books) {
                System.out.println(items.getBookName());
            }
    
            session.close();
    
        }
    
    
        ///智能标签where + if 进行多条件查询
        @Test
        public void t5selectZhiNengByIf(){
            SqlSession session= MyBatisUtils.getSession();
    
            IBookDAO mapper = session.getMapper(IBookDAO.class);
            List<Book> books = mapper.findtrueBookByIf("",40);
            for (Book items:books) {
                System.out.println(items.getBookName());
            }
    
            session.close();
    
        }

    打完收工

  • 相关阅读:
    P3180 [HAOI2016]地图
    P2787 语文1(chin1)- 理理思维
    P2221 [HAOI2012]高速公路
    P4137 Rmq Problem / mex
    P3746 [六省联考2017]组合数问题
    P2461 [SDOI2008]递归数列
    P3715 [BJOI2017]魔法咒语
    P3195 [HNOI2008]玩具装箱TOY
    Linux下的strerror是否线程安全?
    bash/shell的字符串trim实现
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/8467587.html
Copyright © 2011-2022 走看看