解决mabatis中属性名和字段名不一致的问题及日志了解

本文介绍了如何解决MyBatis中实体类属性名与数据库字段名不一致的问题,推荐使用ResultMap进行结果集映射。同时,详细讲解了MyBatis的日志配置,包括日志的重要性、Log4j的基本概念和配置步骤,以及如何在MyBatis中启用Log4j作为日志实现。
摘要由CSDN通过智能技术生成

1、解决属性名和字段名不一致的问题
问题:数据库中的字段
在这里插入图片描述
新建一个项目,拷贝之前的,测试实体类字段不一致的情况

public class User {
    private int id;
    private String name;
    private String password;
}

然后测试:
在这里插入图片描述
发现密码为null;
解决方法:起别名,这是一种暴力的办法!不建议使用!

<select id="getUserById" parameterType="int" resultType="user">
    select id,name,pwd as password from mybatis.user where id = #{id}
</select>

我们使用resultMap解决
resultMap---->结果集映射
其实说白了就是k–v键值对!
代码实现:

<!--  结果集映射  -->
<resultMap id="UserMap" type="User">
    <!--column数据库中的字段,property实体类中的属性-->
    <result column="id" property="id" />
    <result column="name" property="name" />
    <result column="pwd" property="password" />
</resultMap>

<select id="getUserById" parameterType="int" resultMap="UserMap">
    select * from mybatis.user where id = #{id}
</select>

在这里插入图片描述
1、resultMap 元素是 MyBatis 中最重要最强大的元素。
2、ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
3、ResultMap 的优秀之处——你完全可以不用显式地配置它们。
第三句话的意思是什么呐,就是假如k—v已经对齐无误了,就可以不用管

<!--  结果集映射  -->
<resultMap id="UserMap" type="User">
   <!--column数据库中的字段,property实体类中的属性-->
   <!--<result column="id" property="id" />-->
   <!--<result column="name" property="name" />-->
   <result column="pwd" property="password" />
</resultMap>

就是id,name不用管了!

2、日志
如果一个数据库操作出现了异常,我们需要排错。日志就是最好的助手
日志工厂:
在这里插入图片描述
SLF4J
LOG4J 【掌握】
LOG4J2
JDK_LOGGING
COMMONS_LOGGING
STDOUT_LOGGING【掌握】
NO_LOGGING
在Mybatis中具体使用哪一个日志实现,在设置中设定!
STDOUT_LOGGING标准日志输出---->在我们的mybatis-config.xml配置!

<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

在这里插入图片描述
Log4j
什么是Log4j?
1、Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
2、我们也可以控制每一条日志的输出格式;
3、通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
4、可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

1、先在pom.xml文件中导入log4j的依赖包

<dependencies>
<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
</dependency>
</dependencies>

2、在resources文件夹下建立log4j.properties文件进行配置

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger = DEBUG,console ,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold = DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern =  [%c]-%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = ./log/kuang.log
log4j.appender.file.MaxFileSize = 10mb
log4j.appender.file.Threshold = DEBUG
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = [%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

3、在mybatis-config.xml核心配置文件中,配置log4j为日志的实现

<settings>
    <setting name="logImpl" value="LOG4J"/>
</settings>

测试运行在这里插入图片描述
日志对象,参数为当前类的class

static Logger logger = Logger.getLogger(UserDaoTest.class);

日志级别:

logger.info("info:进入了testLog4j");
logger.debug("debug:进入了testLog4j");
logger.error("error:进入了testLog4j");

之后可在log文件夹中查看日志文件信息:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Marlboro~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值