介绍
模糊查询是通过检索与目标相关的关键字来获得目标全部信息的方法。
多使用sql语句实行查询。
例如搜索字母‘a’,则可以查询出所有包含’a’ 的信息。
用于图书查询就可以通过几个关键字检索出与之相关的所有书籍。
代码实现
1.首先配置环境:
在mybatis的根目录下引入映射文件
` <mapper resource="cn/kgc/kb07/dao/BookMapper.xml"></mapper>`
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kgc.kb07.dao.BookMapper">
2.在dao层中新建一个接口,其中设置接口方法 获取书籍列表:
List<Books> quaryBooks(@Param("book_name") String book_name, @Param("type_name")String type_name);
3.同层配置xml文件,编写sql语句:
<mapper namespace="cn.kgc.kb07.dao.BookMapper">
<select id="quaryBooks" resultType="books">
select b.*,t.type_name from books b ,books_type t where 1=1
<if test="book_name!=null and book_name!='' ">
and book_name like concat("%",#{book_name},"%")
</if>
<if test="type_name!=null and type_name!=''">
and type_name=#{type_name}
</if>
;
</select>
</mapper>
4.创建book类,其名称要与sql数据库中的对应。
private int book_id;
private String book_name;
private double price;
private int store;
private String des;
private int book_type;
private String type_name;
5.使用单例模式编写创建SqlSession的类
public class MapperConfg {
public SqlSession getSession(){
SqlSession session=null;
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
try {
InputStream is= Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory factory=builder.build(is);
session=factory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
return session;
}
}
6.定义BookService接口方法
public class BooksServices {
public List<Books> queryBooks(String book_name, String type_name) {
MapperConfg mapperConfg=new MapperConfg();
SqlSession session=mapperConfg.getSession();
return session.getMapper(BooksDao.class).quaryBooks(book_name,type_name);
}
}
7.servlet层方法重写
public class QueryBooksServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String book_name=req.getParameter("book_name");
String type_name=req.getParameter("type_name");
BooksServices services=new BooksServices();
List<Books> booksList= services.queryBooks(book_name,type_name);
req.getSession().setAttribute("books",booksList);
resp.sendRedirect("studentlogin.jsp");
}
8.编写前台展示jsp文件:
<form action="querybooks.do" method="get">
图书名:<input type="text" name="book_name">图书类型:<input type="text" name="type_name">
<input type="submit" value="点击查询">
</form>
<hr/>
<table>
<tr>
<th>编号</th>
<th>书名</th>
<th>价格</th>
<th>库存</th>
<th>简介</th>
<th>类型</th>
</tr>
<c:if test="${books!=null}">
<c:forEach items="${books}" var="user">
<tr>
<td>${user.book_id}</td>
<td>${user.book_name}</td>
<td>${user.price}</td>
<td>${user.store}</td>
<td>${user.des}</td>
<td>${user.type_name}</td>
</tr>
</c:forEach>
</c:if>
</table>