> 文章列表 > 基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)

基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)

基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)

上次说到了log/log_list.html的doGetObjects(),其中有doFindPageObjects()方法。
基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)
找到全部的日志对象,并且输出到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 mapperPUBLIC "-//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 desclimit #{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 desclimit #{startIndex},#{pageSize}    
</select>