Mybatis学习笔记七 动态查询语句
发布日期:2021-05-07 00:08:36 浏览次数:26 分类:精选文章

本文共 2816 字,大约阅读时间需要 9 分钟。

动态sql查询语句

1、动态sql査询介绍:

动态sql是Mybatis框架中极其强大的一项功能。在实际的软件开发中,经常有这样的一个霈求场录:査询某一张表中的数据记录时,査询的条件有很多个,但査询的条件个数不确定。

a、在jdbc中要实现条件个数不确定的查询非常麻烦,常用的一种思路是:先通过if语句判断某一个条件是否存在,然后通过字符 串中的方法来拼接sql语句

b、在Mybatis中有很多非常实用的标签,例如可以通过if标签来实现sql语句的动态査询

实例

工程目录:

        

mybatis.xml

没有做任何改变,

Computer.java

也未做任何改变

package cn.java.entity;public class Computer {	private String isbn;	private String book_name;	private String price;	public String getIsbn() {		return isbn;	}	public void setIsbn(String isbn) {		this.isbn = isbn;	}	public String getBook_name() {		return book_name;	}	public void setBook_name(String book_name) {		this.book_name = book_name;	}	public String getPrice() {		return price;	}	public void setPrice(String price) {		this.price = price;	}	@Override	public String toString() {		return "Computer [isbn=" + isbn + ", book_name=" + book_name + ", price=" + price + "]";	}	}
局部配置文件

ComputerDaoImpl.xml

注意:为了避免sql语句传入参数为空,这样设置sql 语句:

select * from book where 1=1

当传入参数为空的时候,sql语句也可以正常的执行。

测试方法
ComputerDaoImpl.java

package cn.java.dao.impl;import static org.hamcrest.CoreMatchers.nullValue;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.annotation.Resource;import javax.xml.bind.annotation.XmlTransient;import org.apache.ibatis.annotations.One;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import cn.java.entity.Computer;public class ComputerDaoImpl {	private static SqlSession session=null;	@Before	public void init(){		try {			SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();			InputStream ins=Resources.getResourceAsStream("mybatis.xml");			SqlSessionFactory ssf= sfb.build(ins);			session=ssf.openSession();		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}		@Test	public void dynamicSelect() throws IOException{			//封装参数		Map
parameterMap=new HashMap
(); //parameterMap.put("isbn", "1001"); parameterMap.put("book_name", "Oracle"); List
> resultLists=session.selectList("cn.java.dao.impl.ComputerDaoImpl.dynamicSelect", parameterMap); for (Map
map : resultLists) { System.out.println(map); } } }
动态sql查询在实际的使用中非常广。

上一篇:关于json数据传输乱码问题
下一篇:Mybatis学习笔记六 ORM简介

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月26日 09时26分39秒