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

mybatis之动态sql&&模糊查询&&结果集处理&&mybatis分页&&特殊字符处理

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

mybatis之动态sql&&模糊查询&&结果集处理&&mybatis分页&&特殊字符处理

今日目标:

1,动态SQL

2,模糊查询( # 与 $ 符号的区别)

3,结果集的配置

4,分页

5,特殊字符的处理

一,动态SQL

常用的动态SQL:If、foreach

BookMapper.java中的方法:

List selectBooksIn(List bookIds);

BookMapper.xml中的配置标签:


  
    select * from t_mvc_book where bname like #{bname}
  
  
    select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')
  

BookMapper.java中的方法:

    
    List selectBooksLike1(@Param("bname")String bname);
    
    List selectBooksLike2(@Param("bname")String bname);
    
    List selectBooksLike3(@Param("bname")String bname);

加入方法到BookService.java接口类中:

    
    List selectBookLike1(String bname);
    
    List selectBookLike2(String bname);
    
    List selectBookLike3(String bname);

在BookServiceImpl.java实现类中实现此方法:

    @Override
    public List selectBookLike1(String bname) {
        return bookMapper.selectBooksLike1(bname);
    }

    @Override
    public List selectBookLike2(String bname) {
        return bookMapper.selectBooksLike2(bname);
    }

    @Override
    public List selectBookLike3(String bname) {
        return bookMapper.selectBooksLike3(bname);
    }

在BookServiceImplTest.java测试类中测试此方法:

    public void testSelectBookLike1() {
        System.out.println("模糊查询1--");
        List books = this.bookService.selectBookLike1("%圣墟%");
        books.forEach(System.out::println);
    }

    public void testSelectBookLike2() {
        System.out.println("模糊查询2--");
        List books = this.bookService.selectBookLike2("%圣墟%");
        books.forEach(System.out::println);
    }

    public void testSelectBookLike3() {
        System.out.println("模糊查询3--");
        List books = this.bookService.selectBookLike3("圣墟");
        books.forEach(System.out::println);
    }

测试结果:

三,查询返回结果集的处理

语法:

resultMap:适合使用返回值是自定义实体类的情况

resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型

    3.1 使用resultMap返回自定义类型集合

    3.2 使用resultType返回List

    3.3 使用resultType返回单个对象

    3.4 使用resultType返回List,适用于多表查询返回结果集

    3.5 使用resultType返回Map,适用于多表查询返回单个结果集

首先建一个BooKVo实体类用于多表查询返回一个集合:

package com.lgs.vo;

import com.lgs.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;
    }
}

BookMapper.xml中的配置标签:

  
    select * from t_mvc_book
  
  
    select * from t_mvc_book
  
  
  select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')

注意放置的先后顺序 

其中要用到来个分页的工具类

PageBean

package com.lgs.util;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;


public class PageBean {

	private int page = 1;// 当前页码

	private int rows = 5;// 页大小

	private int total = 0;//总记录数

	//上一次查询的url
	private String url;
	//上一次查询所携带的查询条件
	private Map parameterMap=new HashMap();
	
	//对pagebean进行初始化
	public void setRequest(HttpServletRequest req) {
		//初始化jsp页面传递过来的当前页
		this.setPage(req.getParameter("page"));
		//初始化jsp页面传递过来的页大小
		this.setRows(req.getParameter("rows"));
		//初始化jsp页面 传递过来是否分页
		this.setPagination(req.getParameter("pagination"));
		//保留上一次的查询请求
		this.setUrl(req.getRequestURL().toString());
		//保留上一次的查询条件
		this.setParameterMap(req.getParameterMap());
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public Map getParameterMap() {
		return parameterMap;
	}
	public void setParameterMap(Map parameterMap) {
		this.parameterMap = parameterMap;
	}
	private void setPage(String page) {
		if(StringUtils.isNotBlank(page)) {
			this.setPage(Integer.valueOf(page));
		}
	}
	private void setRows(String rows) {
		if(StringUtils.isNotBlank(rows)) {
			this.setRows(Integer.valueOf(rows));
		}
	}
	private void setPagination(String pagination) {
		//只有填了false字符串,才代表不分页
			this.setPagination(!"false".equals(pagination));;
	}
	
	private boolean pagination = true;// 是否分页

	public PageBean() {
		super();
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public void setTotal(String total) {
		this.total = Integer.parseInt(total);
	}

	public boolean isPagination() {
		return pagination;
	}

	public void setPagination(boolean pagination) {
		this.pagination = pagination;
	}

	
	public int getStartIndex() {
		return (this.page - 1) * this.rows;
	}

	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
	}

	//上一页
	public int getPrevPage() {
		return this.page>1?this.page-1:this.page;
	}
	//下一页
	public int getNextPage() {
		return this.page 

StringUtils工具类:附属pagebean工具类

package com.lgs.util;

public class StringUtils {
	// 私有的构造方法,保护此类不能在外部实例化
	private StringUtils() {
	}

	
	public static boolean isBlank(String s) {
		boolean b = false;
		if (null == s || s.trim().equals("")) {
			b = true;
		}
		return b;
	}
	
	
	public static boolean isNotBlank(String s) {
		return !isBlank(s);
	}

}

接下来开始测试

BookMapper.xml中的配置标签:

  
  
  select * from t_mvc_book
  
    
      
    
    
       price ]]>
    
  


  

BookMapper.java中的方法:

List list6(BookVo bookVo);



List list7(BookVo bookVo);

加入方法到BookService.java接口类中:

    
    List list6(BooKVo bookVo);

    List list7(BooKVo bookVo);

在BookServiceImpl.java实现类中实现此方法:

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

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

在BookServiceImplTest.java测试类中测试此方法:

    public void testlist6(){
        System.out.println("特殊字符的处理--");
        BooKVo booKVo = new BooKVo();
        booKVo.setMin(20f);
        booKVo.setMax(50f);
        List books = this.bookService.list6(booKVo);
        books.forEach(System.out::println);
    }

    public void testlist7(){
        System.out.println("特殊字符的处理--");
        BooKVo booKVo = new BooKVo();
        booKVo.setMin(20f);
        booKVo.setMax(50f);
        List books = this.bookService.list7(booKVo);
        books.forEach(System.out::println);
    }

测试结果:

OK!到这就结束了,希望能帮到你!!! 

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

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

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