栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis动态SQL和分页

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis动态SQL和分页

一、mybatis动态SQL

 

foreach

  
    select * from t_mvc_book where bid in
    
      #{bid}
    
  

BookMapper 

List selectBooksIn(@Param("bookIds") List bookIds);

 BookServiceImplTest

@org.junit.Test
public void selectBooksIn() {
    System.out.println("mybatis中的foreach标签。。。");
    List books=this.bookService.selectBooksIn(Arrays.asList(new Integer[]{24,25,28}));
    books.forEach(System.out::println);
}
 二、模糊查询

结论:#是自带$符号的,$是不带的有SQL注入的风险。在项目中虽然$符号有注入的风险,但是在开发中我们一般会用它来做mybatis的动态列的小功能。
什么叫mybatis的动态列?
有的时候我们在模块之间会有这种相互调用的情况,你需要在开发中,会在别人的代码上做修改,所以我们会在开发中做这种动态列的效果。可以去减少我们的dao层、map.xml的代码编写。


  select * from t_mvc_book where bname like '${bname}'


  select * from t_mvc_book

  
    select * from t_mvc_book where bid in
    
      #{bid}
    
  
  
  select * from t_mvc_book where bid = #{bid}

vo.BookVo

package com.lxy.vo;

import com.lxy.model.Book;

import java.util.List;

public class BookVo extends Book {

    private List bookIds;

    public List getBookIds() {
        return bookIds;
    }

    public void setBookIds(List bookIds) {
        this.bookIds = bookIds;
    }
}

Bookservice/BookMapper

 
    List list1();

    
    List list2();

    
    Book list3(BookVo bookVo);

    
    List list4();

    
    Map list5(Map book);

BookServiceImpl

 @Override
    public List list1() {
        return bookMapper.list1();
    }

    @Override
    public List list2() {
        return bookMapper.list2();
    }

    @Override
    public Book list3(BookVo bookVo) {
        return bookMapper.list3(bookVo);
    }

    @Override
    public List list4() {
        return bookMapper.list4();
    }

    @Override
    public Map list5(Map book) {
        return bookMapper.list5(book);
    }

BookServiceImplTest

结论1:resultMap多表查询会用,resultType单表查询

结论2:List单表,List多表

    @Test
    public void list1() {
        System.out.println("五种返回类型配置");
        List books=this.bookService.list1();
        books.forEach(System.out::println);
    }

    @Test
    public void list2() {
        System.out.println("五种返回listbook对象");
        List books=this.bookService.list2();
        books.forEach(System.out::println);
    }

    @Test
    public void list3() {
        System.out.println("五种返回类型配置之返回单个对象");
        BookVo bookVo=new BookVo();
        bookVo.setBookIds(Arrays.asList(new Integer[]{28}));
        this.bookService.list3(bookVo);
    }

    @Test
    public void list4() {
        System.out.println("五种返回类型配置之返回listMap对象");
        List books=this.bookService.list4();
        books.forEach(System.out::println);
    }

    @Test
    public void list5() {
        System.out.println("五种返回类型配置之返回listMap对象");
        Map map=new HashMap();
        map.put("bid",29);
        Map m=this.bookService.list5(map);
        System.out.println(m);
    }
四、分页查询

1、自定义mvc

basedao是通过数据库的limit关键字完成的,limit起始下标,偏移重

原始SQL

查询符合条件的记录数countSQL select count(1)from(SQL)t

查询符合条件某一页的数据pagebean

2、Hibernate

分页是自带的

原始SQL

查询分页符合条件的记录数:select count(1)from hql

squery.setFirstResult(pageBean.getStartIndex());

query.setMaxResults(pageBean.getRows());

3、mybatis

引入第三方插件pom依赖·

mybatis是借用了拦截器引入第三方完成分页的,配置拦截器

在对应需要分页的代码中加入相应的代码

导入pom依赖


  com.github.pagehelper
  pagehelper
  5.1.2

Mybatis.cfg.xml配置拦截器


    
    
    

BookMapper/BookService

List listPager(Map map, PageBean pageBean);

 BookServiceImpl

@Override
    public List listPager(Map map, PageBean pageBean) {
        if(pageBean != null && pageBean.isPagination()){
            PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
        }
        List list = bookMapper.listPager(map);
        if(pageBean != null && pageBean.isPagination()){
            PageInfo pageInfo = new PageInfo(list);
            System.out.println("页码:"+pageInfo.getPageNum());
            System.out.println("页大小:"+pageInfo.getPageSize());
            System.out.println("总记录:"+pageInfo.getTotal());
            pageBean.setTotal(pageInfo.getTotal()+"");

        }
        return list;
    }

BookServiceImplTest

 @Test
    public void listPager() {
        System.out.println("mybatis中模糊查询#与$的区别.....");
        Map map=new HashMap();
        map.put("bname","圣墟");
        PageBean pageBean=new PageBean();
        //查第三页
        pageBean.setPage(3);
        //不分页
        pageBean.setPagination(false);
        List ms=this.bookService.listPager(map,pageBean);
        ms.forEach(System.out::println);
    }
五、特殊字符处理

BookMapper


    select * from t_mvc_book
    
      
        
      
      
         price ]]>
      
    
  

  

BookVo

 BookService/BookMapper

 
    List list6(BookVo bookVo);


    
    List list7(BookVo bookVo);

}

 BookServiceimpl

@Override
public List list6(BookVo bookVo) {
    return bookMapper.list6(bookVo);
}

@Override
public List list7(BookVo bookVo) {
    return bookMapper.list7(bookVo);
}

BookServiceImplTest

 @Test
    public void list6() {
        System.out.println("五种返回listbook对象");
        BookVo bookVo=new BookVo();
        bookVo.setMin(20);
        bookVo.setMax(40);
        List books=this.bookService.list6(bookVo);
        books.forEach(System.out::println);
    }

    @Test
    public void list7() {
        System.out.println("五种返回listbook对象");
        BookVo bookVo=new BookVo();
        bookVo.setMin(20);
        bookVo.setMax(40);
        List books=this.bookService.list7(bookVo);
        books.forEach(System.out::println);
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号