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

上次说到了log/log_list.html的doGetObjects(),其中有doFindPageObjects()方法。
基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)_第1张图片
找到全部的日志对象,并且输出到div上。这里是后台的代码。
01.pojo对象,这里需要序列化保存。序列化的作用是保存对象到内存缓存中,或者是文件中,安全保存。

这里需要implement Serializable接口,并且在类中去添加uid。
基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)_第2张图片
选中选项,使用就可以自动有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语句


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>

你可能感兴趣的:(spring,boot,ajax,java)