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. JSON&AJAX

    JSON 定义:JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(欧洲计算机协会制定的 JS 规范)的一个子集 ...

  2. mysql yyyy-MM-dd function UNIX_TIMESTAMP('yyyy-MM-dd HH:mm:ss')

    mysql yyyy-MM-dd function UNIX_TIMESTAMP('yyyy-MM-dd HH:mm:ss') select UNIX_TIMESTAMP('1997-10-04 22 ...

  3. Jenkins - Linux下启动Jenkins报错hudson.WebAppMain#contextDestroyed: Shutting down a Jenkins instance that was still starting up

    报错截图 在Linux下直接运行jenkins.war报错,导致启动失败 报错原因 运行端口已被其他进程占用 解决方法 换个启动端口就可以啦!

  4. [MIT6.006] 1. Algorithmic Thinking, Peak Finding 算法思维,峰值寻找

    [MIT6.006] 系列笔记将记录我观看<MIT6.006 Introduction to Algorithms, Fall 2011>的课程内容和一些自己补充扩展的知识点.该课程主要介 ...

  5. 【linux】led子系统

    目录 前言 linux子系统 led子系统 led子系统实战-系统调用-ARM平台 前言 接下来记录的是 led子系统 目前不涉及驱动源码 linux子系统 在 Linux 系统中 绝大多数硬件设备都 ...

  6. 6.java设计模式之适配器模式

    基本需求: 将一个220V的电压输出成5V的电压,其中220V电压为被适配者,变压器为适配器,5v电压为适配目标 基本介绍: 适配器模式属于结构型模式,将某个类的接口转换成客户端期望的另一个接口表示, ...

  7. LVM划分磁盘及扩容缩容

    lvm:logical volume monitor 逻辑卷管理器 作用: 采用lvm划分磁盘:磁盘空间不够时,方便扩展磁盘.物理卷加到卷组时被划分等大的pe,即pv是由众多pe构成.pe是卷组的最小 ...

  8. Jar 和 war 区别

    jar包:对于学习java的人来说应该并不陌生.我们也经常使用也一些jar包.其实jar包就是java的类进行编译生成的class文件就行打包的压缩包而已.里面就是一些class文件.当我们自己使用m ...

  9. 如何给input或textarea文字加背景色

    需求说明 如果要实现一个需求,如下图,在一个textarea中加入文字加背景色,该怎么处理呢? 答案:"很简单啊!直接给textarea加个background-color的背景颜色啊!&q ...

  10. MySQL索引背后的数据结构及原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...