上次说到了log/log_list.html的doGetObjects(),其中有doFindPageObjects()方法。
找到全部的日志对象,并且输出到div上。这里是后台的代码。
01.pojo对象,这里需要序列化保存。序列化的作用是保存对象到内存缓存中,或者是文件中,安全保存。
这里需要implement Serializable接口,并且在类中去添加uid。
选中选项,使用就可以自动有uid
02.写dao层代码
注意:
当DAO中方法参数多余一个时尽量使用@Param注解进行修饰并指定名字,然后再Mapper文件中便可以通过类似#{username}方式进行获取,否则只能通过#{arg0},#{arg1}或者#{param1},#{param2}等方式进行获取。
当DAO方法中的参数应用在动态SQL中时无论多少个参数,尽量使用@Param注解进行修饰并定义。
@Param的作用范围只能是被修饰的sql语句。
其中的代码是:
/**
* @param username 查询条件(例如查询哪个用户的日志信息)
* @return 总记录数(基于这个结果可以计算总页数)
*/
Long getrownum( @Param("username") String username);
/**
* @param username 查询条件(例如查询哪个用户的日志信息)
* @param startIndex 当前页的起始位置
* @param pageSize 当前页的页面大小
* @return 当前页的日志记录信息
* 数据库中每条日志信息封装到一个SysLog对象中
*/
List<sysLog> fingall( @Param("username")String username, @Param("startIndex")Long startIndex, @Param("pageSize")int pageSize);
03.mapper.xml映射文件。这里存放的是sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.dao.sysLogDao">
<select id="getrownum" resultType="Long">
select count(*) from sys_logs
<where>
<if test="username!=null and username=!''">
username like concat("%",#{username},"%")</if>
</where>
</select>
<select id="fingall" resultType="com.cy.pojo.sysLog">
select count(*) from sys_logs
<where>
<if test="username!=null and username=!''">
username like concat("%",#{username},"%")</if>
</where>
order by createdTime desc
limit #{startIndex},#{pageSize}
</select>
</mapper>
优化xml文件,sql语句中有重复的部分:
<where>
<if test="username!=null and username=!''">
username like concat("%",#{username},"%")</if>
</where>
可以使用标签sql来进行修饰:
<sql id="queryWhereId">
from sys_logs
<where>
<if test="username!=null and username!=''">
username like concat("%",#{username},"%")
</if>
</where>
</sql>
sql标签需要用id来识别:
进一步优化sql语句:
用include标签进行插入操作
<select id="getRowCount"
resultType="int">
select count(*)
<include refid="queryWhereId"/>
</select>
<select id="findPageObjects"
resultType="com.cy.pj.sys.entity.SysLog">
select *
<include refid="queryWhereId"/>
order by createdTime desc
limit #{startIndex},#{pageSize}
</select>