搜寻框含糊搜寻数据并判断如果是空则不执行 where外面的内容<mapper namespace="com.cy.pj.sys.dao.SysLogDao">指定数据为dao层    <!-- resultType返回值去记录总数 -->        <select id="getRowCount" resultType="int"><!-- 返回值是int类型 -->        select count(*) from sys_logs    <where>        <if test="username!=null and username!=''"><!-- 搜寻数据如果为 null就不执行where了 -->        username like concat("%",#{username},"%")<!-- 含糊搜寻数据 -->        </if>    </where>    </select></mapper>
这是一种逻辑思维 当前业务就要这样去写的//基于条件查问用户行为日志记录总数    //@param username 查问条件()用户名-基于此用户名进行含糊查问)    //@return 查问到的记录总数    int getRowCont(String username);//这是一个搜寻框,依据用户名查问的总记录数    List<SysLog> findPageObjects(String username,查问条件            Integer startIndex, 起始地位            Integer pageSize);这个是分页面的大小每页最多显示多少条数据
    <sql id="abcd">应用sql封装总数据提取共性     from sys_logs    <where>        <if test="username!=null and username!=''"><!-- 搜寻数据如果为 null就不执行where了 -->        username like concat("%",#{username},"%")<!-- 含糊搜寻数据 -->        </if>    </where>    </sql>    <!-- resultType返回值去记录总数 -->    <select id="findPageObjects" resultType="com.cy.pj.sys.pojo.SysLog"><!-- 返回值间接返回包名 -->    分页查问    select *    <include refid="abcd"/>调用sql里的共性数据    order by createdTime desc    limit #{startIndex},#{pageSize}    </select>    总记录数据    <select id="getRowCount" resultType="int"><!-- 返回值是int类型 -->        select count(*)        <include refid="abcd"/>调用sql里的共性数据sql自定义的id值    </select>
//service 层分页业务;public interface SysLogService {    //用户名    //分页查问    //返回值 封装了查问和计算结果的一个分页对象    pageObject<SysLog> findPageObjects(String username,Integer pageCurrent);} 
02这个是定义的一个类 pojo层的类和上面对应 public class pageObject<T> implements Serializable{    private static final long serialVersionUID = 7372326137711610989L;//实现序列化接口    //总数数    private Integer rowCount;//池化思维    //当前页记录    private List<T> records;//加《T》是为了其余模块 当前应用分页 分享共性    //总页数    private Integer pageCount;    //页面大小(每页最多显示多少条记录)    private Integer pageSize;    //以后页码值    private Integer pageCurrent;    public pageObject(Integer rowCount, List<T> records, Integer pageSize, Integer pageCurrent) {        super();        //依据业务需要近进行判断所须要的数据;        this.rowCount = rowCount;//总数数        this.records = records;//当前页记录        this.pageCount = pageCount;//总页数        this.pageSize = pageSize;//页面大小(每页最多显示多少条记录)        this.pageCurrent = pageCurrent;//以后页码值        //计算pageCount的值,办法2        this.pageCount=(this.rowCount-1)/pageSize+1;    }}
Serviceimpl层业务 业务层 业务层@Servicepublic class SysLogServiceImpl implements SysLogService {    @Autowired     private SysLogDao sysLogDao;    @Override    public pageObject<SysLog> findPageObjects(String username, Integer pageCurrent) {        // TODO Auto-generated method stub        if(pageCurrent==null||pageCurrent<1)            throw new IllegalArgumentException("以后页码值有效");        //判断值        int rowCount=sysLogDao.getRowCont(username);        if(rowCount==0)        throw new ServiceException("没有找到对应后果");本人定义的异样 应用这个异样要类继承 RuntimeException这个类是运行异样        //查问当前页数据        int pageSize=5;//这个值也能够从页面传递到服务器显示数据        int startIndex=(pageCurrent-1)*pageSize;        List<SysLog> records=sysLogDao.findPageObjects(username, startIndex, pageSize);        return new pageObject<SysLog>(rowCount, records, pageSize, pageCurrent);    }}
Controller层解决异样  ,  解决异样语句 @Controller@RequestMapping("/log/")//这个当前如果用户传个——1则会报500这个谬误所以最好还是 增加一个状态 public class SysLogController {    @Autowired    private SysLogService sysLogService;    @RequestMapping("doFindPageObjects")    @ResponseBody//以json字符串返回数据    public JsonResult doFindPageObjects(String username,Integer pageCurrent){//        try {        pageObject<SysLog> pageObject=sysLogService.findPageObjects(username, pageCurrent);                return new JsonResult(pageObject);//没有谬误就返回 正确的值//        } catch (Exception e) {//能够不必这个 认为这个当前如果还有异样怎么办哪?        //所以 须要一个全局的解决异样;//        return new JsonResult(e);//如果有谬误就返回状态就返回0            // TODO: handle exception        }            }
这个就写js函数吧 当前 在欠缺吧!<script type="text/javascript">    //这个是管制分页 总分页 反正都有用    function doSetPagination(page) {        //1.始化数据        $(".rowCount").html("总记录数(" + page.rowCount + ")");        $(".pageCount").html("总页数(" + page.pageCount + ")");        $(".pageCurrent").html("当前页(" + page.pageCurrent + ")");        //存储以后页码值 data函数用于在指定dom对象上存储数据去数据其根本语法为data(key,[value]);        $("#pageId").data("pageCurrent", page.pageCurrent);//如果只有k则示意取值 data 属性必须 有值 能力用data        $("#pageId").data("pageCount", page.pageCount);    }    //事件注册 //在pageId对应的对象上技能型click事件注册点击妻子元素first....等等执行doJUmpToPage    $(function() {//on应用中央动静按键         $("#pageId").on("click", ".first,.pre,.next,.last", doJumpToPage);    });//on语法 click    //定义doJumpToPage办法通过此办法实现以后数据查问    function doJumpToPage() {        //1.获取点击对象的class值        //prop是jquery中的一个操作属性的函数即泵语法prop(属性名【属性值】)        var cls = $(this).prop("class");//prop用于获取dom对象属性值或赋值prop只取规范属性如class,id 或者 java有的语言值        //2.基于点击的对象执行pageCurrent值的批改        //2.1获取pageCurrent,pageCount的以后值 这个值最好还是不要用 全局变量         var pageCurrent = $("#pageId").data("pageCurrent"); //当前页        var pageCount = $("#pageId").data("pageCount");//总页数        //2.2批改pageCurrent的值        if (cls == "first") {//首页            pageCurrent = 1;        } else if (cls == "pre" && pageCurrent > 1) {//上一页            pageCurrent--;        } else if (cls == "next" && pageCurrent < pageCount) {//下一页            pageCurrent++;        } else if (cls == "last") {//最初一页            pageCurrent = pageCount;        } else {            return;//其余状况什么也不做        }        //3.对pageCurrent值进行从新绑定        $("#pageId").data("pageCurrent", pageCurrent);//重洗刷新页面        doGetObjects();//此函数定义在了类标页面    }
分页加查问语句。。。<!-- load加载办法注入办法 --><script type="text/javascript">    //第一步 分页页面加载实现 向服务端发动异步申请    $(function() {//此函数所有货色加载完最初执行;如果把js函数写在最上面也能够不写这个函数        $("#pageId").load("doPageUI")//把doPageUI加载到pageId        doGetObjects();//刷新这个办法        //查询方法 查询方法 查询方法        $(".input-group-btn").on("click",".btn-search",doQueryObjects);//查问日志按钮进行注册    })    //查询方法     function doQueryObjects(){        //如果这里不初始化 为1如果在某个页面 就会搜寻不进去后果 忘了能够删除试试         //以后页码初始化        $("#pageId").data("pageCurrent",1);         //为什么要调用doGetObjects函数?         //重用js代码,简化jS代码编写。         doGetObjects();         }    //第二步定义异步申请处理函数     function doGetObjects() {        //定义url和参数        var url = "log/doFindPageObjects"            var pageCurrent=$("#pageId").data("pageCurrent");        if(!pageCurrent) pageCurrent=1;//默认值        var params = {"pageCurrent" :pageCurrent};//默认页码值 是第一页         //基于用户名查问试获取用户名这个参数值         var username=$("#searchNameId").val();         //这个值肯定和数据库里的值一样 不能乱写         if(username) params.username=username;//查问时须要        //2.发动异步申请        //ajax申请的回调函数参数名能够是任意吗?能够必须合乎示意符的标准        $.getJSON(url, params, function(result) {            //请问result是一个字符串还是json格局的js对象?对象            doHandleQueryResponseResult(result);        });//非凡的ajax函数            }    //第三步 定义回调函数解决服务端的响应后果    function doHandleQueryResponseResult(result) {//JsonResult        if (result.state == 1) {//定义状态信息             //更新table中tbody外部的数据   // records当前页记录            //这个其实也相当于调用办法            doSetTableBodyRows(result.data.records);//将数据出现在页面上这个也算刷新数据了            //更新页面page.html分页数据            doSetPagination(result.data); //将这个函数读取到page.html中        }else{            alert(result.message);        }    }    function doSetTableBodyRows(records){        //1.获取tbody对象 ,并清空原有内容        var tBody=$("#tbodyId");        tBody.empty();//清空原有的内容        //2迭代 result,将流动信息追加到tbody中        records.forEach((item)=>{//代表数组的某个元素            //将原有的数据替换掉更新新的数据 //应用了模板字符拼接办法            tBody.append(                `<tr>                <td><input type='checkbox'value=${item.id}></td>/*模板字符拼接 */                <td>${item.username}</td>                <td>${item.operation}</td>                <td>${item.method}</td>                <td>${item.params}</td>                 <td>${item.time}</td>                <td>${item.ip}</td>                </tr>`                    );        });    }
删除操作单删除今天在改.on("click",".btn-delete",doDeleteObjects);//这个函数还能够这样写    })    //input-group-btn查问事件    //btn-delete 删除事件    //btn-search 这个是分页事件    //删除操作事件处理    function doDeleteObjects(){        //1.获取选中的id值        var ids=doGetCheckedIds();        if(ids.length==0){            alert("至多抉择一个");//弹出一个框            return;        }    var url="log/doDeleteObjects";    var params={"ids":ids.toString()};    $.post(url,params,function(result){//post提交形式        if(result.state==1){            alert(result.message);//弹框            doGetObjects();        }else{            alert(result.message);//弹框        }        });        }    function doGetCheckedIds(){        //定义一个数组,用于存储选中的checkbox的id值        var array=[];        //获取tbody中所有类型为checkbox的input元素        $("#tbodyId input[type=checkbox]").        each(function(){            //假如此元素的checked属性的值为true            if($(this).prop("checked")){                //调用数组对象的push办法将选中的值存储到数组中                array.push($(this).val());            }        });        return array;//返回