easyUI(七) -- SSM+easyUI 级联模糊查询

使用 Mybatis 持久化框架 , 最大的重点难点在于 SQL 语句的书写 , 一般只要在数据库操作成功的 SQL 语句 , 想要实现某个功能就不难 .
但是这个级联模糊查询在数据库可以查出外键表数据 , 但是用框架就不行 , 以后想到了好的解决办法再给出其他方案 .

注意查询 SQL 语句最好不要使用 * 号 , 因为后台解析的 * 需要消耗资源 , 以后数据库扩展了其他字段 , 但是你并不想使用的话 , 也会有大量资源浪费 . insert 语句同理

action 操作

    @RequestMapping("queryallbylike")
    @ResponseBody
    public Object queryAllByLike(){
        return listUser;
    }


    @RequestMapping("toquerylike")
    public String toQueryLike(String deptname){
        if(deptname==null){
            deptname="";            
        }
        //取出前端传过来的逗号
        deptname = deptname.replaceAll(",", "");
        listUser = userService.queryAllByLike(deptname);
        return "user/userListLike";
    }

这里做了一个巧妙的转换 . 因为如果你直接调用 queryAllByLike 方法 , 他会让你从前台传入一个参数作为查询条件 , 但是我们知道 easyui 在页面显示 JSON 格式数据的时候是通过 url 的 , 如果你要给要显示数据的 url 动态传值十分不方便 , 所以在跳转页面的时候就把查询条件传过去并获得查询的 list , 显示的时候就只需要传入一个不带参数的 url 就行了
toQueryLike 方法按条件查出 user 的 list 集合 , 并跳转到 user/userListLike .jsp 然后 user/userListLike .jsp 获取 queryAllByLike 的 json 数据
这是我的 Table 标签

"tt" title="Load Data" class="easyui-datagrid" style="width:550px;height:250px"
            data-options="url:'${pageContext.request.contextPath}/user/queryallbylike',rownumbers:'true',
            pagination:true,toolbar:'#tb',iconCls:'icon-save',fitColumns:'true',fit:true,multiple:'false',pageList:[2,5,10,20]">

我们也可以不通过主键(deptname)字段模糊查 , 直接使用 user 表引用 dept 表的外键 id deptid 查
SQL语句

SELECT * FROM  clients WHERE isdel=1 AND userid=#{users.userid}

action 代码

    @ResponseBody
    @RequestMapping("queryallbylike")
    public Object queryAllByLike(){
        return listClient;
    }

    @RequestMapping("toquerylike")
    public String toQueryLike(int userid){
        listClient = clientsService.queryAllByLike(userid);
        return "client/clientListLike";
    }

页面代码

$(function(){
     chooseUser();
})
function chooseUser(){
            $("#getUserid").combobox({
                url:'${pageContext.request.contextPath}/user/queryalluser',
                valueField:'userid',
                textField:'username'
            });
        }
        function queryClientLike(){
            var userid = $('#getUserid').combobox('getValue');
            alert(userid);
            location = "${pageContext.request.contextPath}/client/toquerylike?userid="+userid;
        }
        所属员工:span> <input id="getUserid" style="line-height: 20px; border: 1px solid #ccc"> 

这种方法可以通过下拉框选择你要匹配的外键字段 , 但是传过去的是一个 id . 而且我们就不用传 String 类型的数据到后台了 , 当然也就不用担心没有用 form 表单提交的乱码问题

你可能感兴趣的:(SSMybatis,easyUI)