需要解决的问题:属性名与字段名不一致
问题描述
- 当User中属性名与数据库中字段名不一致,会出现查询不到该属性的情况。(实际上sql语句查询时候取的set与get方法的属性名,即setXX与getXX,sql取得是XX。假设属性名与password,但是这两个方法为setPwd与getPwd,实际上还是可以查到,此处不讨论这种情况。)
- User类
- 数据库字段
- 从上述两张图可以明显看出,属性名与数据库字段不一致,因此查询结果会出现查询不到该属性的值,如下图
解决方法
- 方法1:在sql语句中动态的起别名,使属性名与字段名一致。(不推荐)
<select id="selectUserById" resultType="User">
select id , name , pwd as password from user where id = #{id}
</select>
- 方法2:通过结果集映射解决
如上图所示,通过更改resultType为resultMap。并在resultMap标签中定义字段名与属性的映射关系,这样即可通过属性名在数据库中找到对应的字段数据。
日志
日志工厂
- 如果一个数据库出现异常,需要排错,日志就是最好的助手。
- 具体做法:在Mybatis配置文件中配置日志。value可以通过官方文档获取。
LOG4J
- 什么是LOG4J
- og4j是Apache的一个开源项目
- 通过使用Log4j,我们可以控制日志信息输送的目的地:控制台,文本,GUI组件…
- 我们也可以控制每一条日志的输出格式;
- 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
- LOG4J的使用准备
- 导入LOG4J包,若不导入则报错ClassNotFoundException。
- 配置log4j.properties配置文件
- 在项目核心配置文件中配置log4j日志
- 简单使用
- 使用log4j的类中,导入包import org.apache.log4j.Logger;
- 生成日志对象,参数为当前类.class
static Logger logger = Logger.getLogger(UserDaoTest.class);
- 日志级别
logger.info("info:进入log4j");
logger.debug("debug:进入log4j");
logger.error("error:进入log4j");
分页
- 方法1:Limit实现
- 方法2:RowBounds实现(不推荐)
- 方法3:分页插件:PageHelper