Mybatis-03

一、继续上一部分的日志工厂

1、Log4j

什么是log4j:

log4j是apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台,文件,GUI组件

我们也可以控制每一条日志的输出格式

通过定义每一条日志信息的级别,我们能够更加细致的控制日志的生成过程

通过一个配置文件来灵活的进行配置,而不需要修改应用的代码

流程:

先导入log4j的包

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

写log4j的配置文件

#将等级为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/space.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

在Mybatis核心配置中配置log4j为日志的实现

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

log4j的使用:运行测试类,跟默认的日志s没啥区别

 生成的日志文件

 二、limit实现分页

 //limit实现分页
    List<User> getUserLimit(Map<String,Integer> map);
<!--因为现在我们的数据库列名和实体类的属性没有对齐,所以直接resultType会导致密码查不出来,所以在这里映射一下-->

<resultMap id="UserName" type="User">
    <result column="pwd" property="password"/>
</resultMap>
<select id="getUserLimit" parameterType="map" resultMap="UserName">
    select * from user limit #{startIndex},#{pageSize}
</select>


<!--这里是正常情况下-->
<select id="getUserLimit" parameterType="map" resultType="user">
     select * from user limit #{startIndex},#{pageSize}
</select>
  @Test
    public void getUserLimit(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String, Integer> map = new HashMap<>();

        map.put("startIndex",0);
        map.put("pageSize",2);

        List<User> user = mapper.getUserLimit(map);

        for (User user1 : user) {
            System.out.println(user1);
        }


        sqlSession.close();

    }

三、使用注解开发

    //根据id拿到一个用户
    @Select("select id,name,pwd as password from user")
    List<User> getUserById();
<!--使用注解开发就不需要mapper.xml了 直接在mybatis配置中配置mapper 通过class找到对应的接口就好了-->    
<mappers>
        <mapper class="space.urbeautiful.dao.UserMapper"/>
</mappers>
    @Test
    public void getUserById() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userById = mapper.getUserById();
        for (User user : userById) {
            System.out.println(user);
        }
        sqlSession.close();
    }

使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

原文地址:https://www.cnblogs.com/jzspace/p/13179977.html