MyBatis入门(二)

129 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

强化MyBatis

在Mybatis工作过程中,通过打印日志的方式,将要执行的SQL语句打印出来。

加入log4j日志功能

a>加入依赖

<!-- log4j日志 -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

b>加入log4j的配置文件

log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下,这个配置文件的名字不能改!!!

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
%m (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

日志的级别

FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)

从左到右打印的内容越来越详细

打印输出

DEBUG 03-03 14:22:43,210 ==>  Preparing: insert into t_user values (1 ,'admin','123456',23,'男','123@qq.com') (BaseJdbcLogger.java:137) 
DEBUG 03-03 14:22:43,242 ==> Parameters:  (BaseJdbcLogger.java:137) 

查询功能

如果查的只是一条数据,就拿实体类对象接受,如果是很多数据,就用List集合就行

在mybatis中每一个sql语句都有单独的标识,mapper接口的全类名+方法名,当mybatis执行sql语句时就是根据mapper接口的全类名找到映射文件,通过方法名找到sql语句

<!--     User getUserById();
查询功能的标签必须设置resultType和resultMap
resultType:设置默认的映射关系
resultMap:设置自定义的映射关系
-->
    <select id="getUserById" resultType="com.yzh.mybatis.User">
        select  * from  t_user where id = 1
    </select>
    
<!--     List<User> getAllUser();-->
    <select id="getAllUser" resultType="com.yzh.mybatis.User">
        select  * from  t_user
    </select>
//        User userById = mapper.getUserById();
//        System.out.println(userById);
        List<User> allUser = mapper.getAllUser();
        allUser.forEach(user -> System.out.println(user));
输出结果
DEBUG 03-04 10:42:12,641 ==>  Preparing: select * from t_user (BaseJdbcLogger.java:137) 
DEBUG 03-04 10:42:12,673 ==> Parameters:  (BaseJdbcLogger.java:137) 
DEBUG 03-04 10:42:12,698 <==      Total: 2 (BaseJdbcLogger.java:137) 
User{id=1, username='张三', password='123456', age=23, sex='男', email='123@qq.com'}
User{id=2, username='admin', password='123456', age=23, sex='男', email='123@qq.com'}