在mybatis中写完SQL后,部署到服务器上,在页面端出现以下错误:java.lang.IndexOutOfBoundsException: Index: 7, Size: 7
根据以往的经验,在mysql客户端程序上运行相关sql语句,
select * from t_syslog limit 0,10
能够出现结果,但是在页面上运行就是报错
报错内容如下
困扰了一上午,最后通过不同的SQL语句进行测试,发现问题出现在实体类中,根本原因是实体类属性与数据库字段没有一一对应
数据库的service和dao没有任何问题,最后只可能是实体类,先看实体类与数据库字段名是不是相同。ok,都是相同的。
注意:字段的顺序一定要跟数据库顺序对应,否则可能出现意想不到的错误
。
private String visitTimeStr;数据库中没有这个字段,放到属性的最后面
public class SysLog implements Serializable {
private String id; //主键id值
private Date visitTime; //访问时间
private String visitTimeStr;//拜访时间,字符串类型
private String username; //用户名
private String ip; //访问ip地址
private String url; //访问url
private Long executionTime; //访问执行时间
private String method; //访问方法
getter和setter方法省略
}
Service实现类
public PageResult pageQuery(QueryPageBean queryPageBean) {
Integer currentPage = queryPageBean.getCurrentPage();//值为1
Integer pageSize = queryPageBean.getPageSize();//值为10
String queryString = queryPageBean.getQueryString(); //查询条件
//完成分页查询是基于mybatis框架提供的分页助手来查询
PageHelper.startPage(currentPage, pageSize);
Page<CheckItem> page = checkItemDao.selectByCondition(queryString);
long total = page.getTotal();
List<CheckItem> rows = page.getResult();
PageResult pageResult = new PageResult(total, rows);
return pageResult;
}
Dao
<mapper namespace="com.xihai.dao.SysLogDao">
<select id="selectByCondition" parameterType="String" resultType="com.xihai.pojo.SysLog">
select * from t_syslog
<if test="value != null and value.length > 0">
where username = #{value}
</if>
</select>