title: Mybatis学习03
date: 2020-01-19 13:03:20
tags:

Mybatis学习的第二天,内容有日志和分页。

<!--more-->

1、日志

1、日志的设置

在mybatis核心配置文件中设置,在<settings></settings>标签中使用<setting></setting>来配置。

Mybatis内置了多个日志,有:

  • SLF4J

  • LOG4J (常用)

  • LOG4J2

  • JDK_LOGGING

  • COMMONS_LOGGING

  • STDOUT_LOGGING (常用,标准日志)

  • NO_LOGGING

例如STDOUT_LOGGING的配置则需在配置文件中加入:

<!--    mybatis的设置-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

效果如下:

2、LOG4J

log4j的解释:

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等 。

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

  • 可以通过一个配置文件来灵活地进行配置

开始使用:

  • Maven添加依赖

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
    </dependency>
  • mybatis设置log4j为日志

    <settings>
    <setting name="logImpl" value="LOG4J"/>
    </settings>
  • 编写log4j的配置文件(放在resoures中,名为log4j.properties)

    ### set log levels ###
    log4j.rootLogger = INFO , console , debug , error

    ### console ###
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n

    ### log file ###
    log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.debug.File = ./log/log4j.log
    log4j.appender.debug.Append = true
    log4j.appender.debug.Threshold = INFO
    log4j.appender.debug.layout = org.apache.log4j.PatternLayout
    log4j.appender.debug.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n

    ### exception ###
    log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.error.File = ./log/log4j.log
    log4j.appender.error.Append = true
    log4j.appender.error.Threshold = ERROR
    log4j.appender.error.layout = org.apache.log4j.PatternLayout
    log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n


    ###需要声明,然后下方才可以使druid sql输出,否则会抛出log4j.error.key not found
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %l %c%n%p: %m%n

    ### druid sql ###
    log4j.logger.druid.sql=warn,stdout
    log4j.logger.druid.sql.DataSource=warn,stdout
    log4j.logger.druid.sql.Connection=warn,stdout
    log4j.logger.druid.sql.Statement=warn,stdout
    log4j.logger.druid.sql.ResultSet=warn,stdout
  • java代码中使用log4j

        
    @Test
    public void TestLog4j(){
    Logger logger = Logger.getLogger(UserMapperTest.class);
    logger.info("info:进入TestLog4j");
    logger.debug("debug:进入TestLog4j");
    logger.error("error:进入TestLog4j");
    }

2、分页

1、limit分页(SQL语句)

  • 接口

     //通过分页获取用户信息
    List<User> getUserByLimit(Map<String,Integer> map);
  • xml的语句

    <!--    获取分页-->
    <select id="getUserByLimit" parameterType="map" resultType="User">
    select * from user limit #{startIndex},#{pageSize}
    </select>
  • 测试

      @Test
    public void getUserByLimit(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    map.put("startIndex",0);
    map.put("pageSize",3);
    List<User> userByLimit = mapper.getUserByLimit(map);
    for (User user : userByLimit) {
    System.out.println(user);
    }
    sqlSession.close();
    }

2、RowBounds实现(JAVA代码层面)

  • 接口

    //rowbounds实现分页
    List<User> getUserByRowBounds();
  • xml文件

    <!--    rowbounds实现分页-->
    <select id="getUserByRowBounds" resultType="User">
    select * from user
    </select>
  • 测试代码

    @Test
    public void getUserByRowBounds(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    RowBounds rowBounds = new RowBounds(1, 3);
    List<User> userList = sqlSession.selectList("com.neversettle.dao.UserMapper.getUserByRowBounds", null, rowBounds);
    for (User user : userList) {
    System.out.println(user);
    }
    sqlSession.close();
    }

Mybatis学习03的更多相关文章

  1. 【MyBatis学习03】原始dao开发方法及其弊端

    上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使 ...

  2. MyBatis:学习笔记(3)——关联查询

    MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统, ...

  3. Mybatis学习笔记一

    Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为M ...

  4. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  5. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  6. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

  7. JavaScript学习03 JS函数

    JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...

  8. Java虚拟机JVM学习03 连接过程:验证、准备、解析

    Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...

  9. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

随机推荐

  1. 基于 .NET 的 FluentValidation 数据验证

    学习地址:官方文档,更多更详细的内容可以看官方文档. FluentValidation 是一个基于 .NET 开发的验证框架,开源免费,而且优雅,支持链式操作,易于理解,功能完善,还是可与 MVC5. ...

  2. 浮动布局问题多,还是用inline-block吧

    说说知识陈旧的问题. 目前我的前端开发知识积累最大的问题就是版本问题,也许我已经经历了很多,尝试了很多, 但是有些知识的版本已经过时了,而我还没有来得及更新它们.更悲剧的可能是有些部分我还没有意识到. ...

  3. currentColor在CSS的含义

    currentColor属于CSS中的一个变量,当然也有人称之为CSS的自定义属性,其代表"当前颜色". 在CSS中设置了color的值后,相应CSS代码块(由两个花括号包裹的内容 ...

  4. 调试没有core文件的coredump

    对coredump的分析中,是依赖于core文件的,而core文件中也几乎包含了程序当前的所有状态(堆栈.内存.寄存器等).然而在实际的线上环境中,由于core文件太大.保存core文件耗时太久,出于 ...

  5. UNP——第三章,套接字编程介绍

    1.套接字结构 多数套接字函数都有套接字结构参数,每个协议族都定义了自己的套接字结构,以 sockaddr_ 开始,并对应协议族的唯一后缀. struct sockaddr_in { uint8_t ...

  6. parted会启动你的ceph osd,意外不?

    前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...

  7. 如何测量Ceph OSD内存占用

    前言 这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法 火焰图里面也可以定位内存方面的问题,那个是通过一段时间的统计,以一个汇总的方式来查 ...

  8. MOOC JAVA笔记

    MOOC JAVA笔记 1.基础了解 JDK是开发人员安装的,它提供了开发java程序的必须工具 JRE是普通用户安装的,它提供了java的运行环境 JVM是java虚拟机运行程序的核心 2.程序的移 ...

  9. Wasp XT合成器功能介绍

    本章节将采用图文结合的方式给大家讲解电音编曲软件FL Studio中的Wasp XT合成器的相关功能,感兴趣的朋友可以一起来交流哦. 下面我们一起来看看吧 Wasp XT是一个3振荡器合成器,它包含一 ...

  10. 在线思维导图Ayoa有哪些比较好用的功能

    思维导图是非常实用的一种工具,现在网上有很多制作思维导图的软件,小编也用过很多款软件,今天就和大家分享一款思维导图逆天软件:Ayoa. 用了这款软件后,小编对思维导图的理解刷新了高度,下面就为大家推荐 ...