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文件夹中查看日志文件信息: