Spring MVC和Mybatis 返回json数据和模糊搜索

返回json数据和模糊搜索

1.新建Book.java类实体,属性做set、get 和toString方法

    private int id;
    private String name;
    private String author;
    private float price;
    private String publisher;

2、建立BookMapper接口,传入pattern,用ArrayList可以存放多本图书。

    public ArrayList<Book> find(String pattern);

3、建立BookMapper.xml做映射

<?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="mapper.BookMapper">
    <select id="find" parameterType="string" resultType="entity.Book">
        select * from book where name like #{pattern}
    </select>
</mapper>

4、mybatis-config.xml 增加<mapper class="mapper.BookMapper"/>

5、建立BookDAO,返回list,多本图书。

    public ArrayList<Book> find(String pattern) throws IOException
    {
        SqlSession session=MyBatisUtils.openSession();
        BookMapper bookMapper=session.getMapper(BookMapper.class);
        ArrayList<Book> list=bookMapper.find(pattern);    
        session.close();
        return list;
    }

6、建立BookController,处理及返回数据

package controller;
import java.io.IOException;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import dao.BookDAO;
import entity.Book;
@Controller
@RequestMapping("/book")
//方法比较多的时候,把含有book的目录提取出来,方便代码看起来简洁。

public class BookController {
    @RequestMapping("/get.do")
    @ResponseBody
    //添加ResponseBody 注解才能把book对象返回到网页上,通常用来返回JSON数据或者是XML数据。

    public ArrayList<Book> find(String pattern) throws IOException
    {
        BookDAO dao=new BookDAO();
        ArrayList<Book> list=dao.find("%"+pattern+"%"); //"%"+pattern+"%"模糊搜索
        return list;
    }

}

7、返回json数据,还引入jackson包(core,annotations,databind)

8、修改spring-servlet.xml配置文件,加含有json的bean 

修改配置文件(第一个bean可以省略)

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  
    <property name="messageConverters">  
        <list>  
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
                <property name="supportedMediaTypes">  
                    <list>  
                        <value>text/html; charset=UTF-8</value>  
                        <value>application/json;charset=UTF-8</value>  
                    </list>  
                </property>  
            </bean>  
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
                <property name="supportedMediaTypes">  
                    <list>  
                        <value>text/html; charset=UTF-8</value>  
                        <value>application/json;charset=UTF-8</value>  
                    </list>  
                </property>  
            </bean>  
        </list>  
    </property>  
</bean> 

9、前端welcme.jsp   使用jquery的append方法

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery.min.js"></script>
<script type="text/javascript" >
$(function(){
	$("#get").click(function(){
		$.post("book/get.do",{pattern:$("#pattern").val()},function(data){
			$("#books").append("<tr><td>序号</td><td>名称</td><td>价格</td><td>作者</td><td>出版社</td></tr>");
			for(i=0;i<data.length;i++){
				$("#books").append("<tr><td>"+ (i+1)+"</td><td>"+ data[i].name +"</td><td>"+ data[i].price +"</td><td>"+ data[i].author +"</td><td>"+ data[i].publisher +"</td></tr>");
			}
			
		},"json");
	});	
});
</script>
</head>
<body>
欢迎${name}登录!<br/>
<br/>
<br/>
请输入书名进行模糊查询:<input type="text" id="pattern" >
<input type="button" id="get" value="获取图书"><br>
<table id="books">

</table>
</body>
</html>

输出结果

数据库数据

jar包和文件目录

猜你喜欢

转载自blog.csdn.net/tangbin0505/article/details/82718714