管理列表数据呈现
1.1定义实体对象(POJO)封装从数据库查询的数据实现ORM映射
//构建与数据库表对应的实体类型
/*
类名 SysLog (实现序列化接口,并定义序列化id)
属性 与表(sys_Logs)中字段有对应关系
方法 set/get/toString
*/
public class SysLog implements Serializable{
private static final long serialVersionUID = -6585641359032857459L;
private Integer id;//用户名
private String username;//用户操作
...
通过此对象除了可以封装从数据库查询的数据,还可以封装客户端请求数据,实现层与层之间数据的传递
1.2定义Dao接口实现,并创建接口并定义相关方法
@Mapper //告诉mybatis 框架 此接口实现类有底层实现
public interface SysLogDao {
/**
* @param username 查询条件(例如查询哪个用户的日志信息)
* @param startIndex 当前页的起始位置
* @param pageSize 当前页的页面大小
* @return 当前页的日志记录信息
*/
//数据库中每条日志信息封装到一个SysLog对象中
List<SysLog> findPageObjects(
@Param("username") String username,
@Param("startIndex")Integer startIndex,
@Param("pageSize") Integer pageSize);
/**
* @param username 查询条件(例如查询哪个用户的日志信息)
* @return 总记录数(基于这个结果可以计算总页数)
* 说明:假如如下方法没有使用注解修饰,在基于名字进行查询
* 时候会出现There is no getter for property named
* 'username' in 'class java.lang.String'
*/
int getRowCount(@Param("username") String username);
}
- 当DAO中方法参数多余一个时尽量使用@Param注解进行修饰并指定名字,然后再Mapper文件中便可以通过类似#{username}方式进行获取,否则只能通过#{arg0},#{arg1}或者#{param1},#{param2}等方式进行获取。
- 当DAO方法中的参数应用在动态SQL中时无论多少个参数,尽量使用@Param注解进行修饰并定义。
1.3Mapper.xml映射文件编写sql语句
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.pj.sys.dao.SysLogDao">
<select id="findPageObjects"
resultType="com.cy.pj.sys.entity.SysLog">
select *
from sys_Logs
<include refid="queryWhereId"/>
order by createdTime desc
limit #{
startIndex},#{
pageSize}
</select>
<select id="getRowCount"
resultType="int">
select count(*)
from sys_Logs
<include refid="queryWhereId"/>
</select>
<!-- 借助此元素对共性数据进行提取 -->
<sql id="queryWhereId">
<where>
<if test="username!=null and username!=''">
username like concat("%",#{
username},"%")
</if>
</where>
</sql>
</mapper>
2.1Service接口以及实现类类
Service接口:
public interface SysLogService {
PageObject<SysLog> findPageObjects(
String username,
Integer pageCurrent);
}
PageObject 封装查询后的数据
package com.cy.pj.common.vo;
...
//类泛型
public class PageObject