博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis——在MyBatis增加log4j日志,优化MyBatis,实现limit分页
阅读量:3941 次
发布时间:2019-05-24

本文共 7053 字,大约阅读时间需要 23 分钟。

MyBatis——在MyBatis增加log4j日志,优化MyBatis,实现SQL分页

1.什么是log4j日志

log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

那么我们就来看看再MyBatis中怎么配置log4j

2.项目实现

创建数据库

在这里插入图片描述
在这里插入图片描述
创建Maven项目并配置pom.xml导入jar包

4.0.0
com.muan
MyBatis练习
1.0-SNAPSHOT
junit
junit
4.11
org.mybatis
mybatis
3.5.1
mysql
mysql-connector-java
5.1.47
log4j
log4j
1.2.17
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.properties
**/*.xml
false

databases.properies

driver = com.mysql.jdbc.Driverusername = rootpassword = 123456url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8

log4j.properties

### Log4j配置 ###### 与Spring结合需要在web.xml中指定此文件位置,并添加监听器 ####定义log4j的输出级别和输出目的地(目的地可以自定义名称,和后面的对应)#[ level ] , appenderName1 , appenderName2log4j.rootLogger=DEBUG,console,file#-----------------------------------##1 定义日志输出目的地为控制台log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target = System.outlog4j.appender.console.Threshold=DEBUG####可以灵活地指定日志输出格式,下面一行是指定具体的格式 ####%c: 输出日志信息所属的类目,通常就是所在类的全名#%m: 输出代码中指定的消息,产生的日志具体信息#%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行log4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=[%c]-%m%n#-----------------------------------##2 文件大小到达指定尺寸的时候产生一个新的文件log4j.appender.file = org.apache.log4j.RollingFileAppender#日志文件输出目录log4j.appender.file.File=log/tibet.log#定义文件最大大小log4j.appender.file.MaxFileSize=10mb###输出日志信息####最低级别log4j.appender.file.Threshold=ERRORlog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n#-----------------------------------##3 druidlog4j.logger.druid.sql=INFOlog4j.logger.druid.sql.DataSource=infolog4j.logger.druid.sql.Connection=infolog4j.logger.druid.sql.Statement=infolog4j.logger.druid.sql.ResultSet=info#4 mybatis 显示SQL语句部分log4j.logger.org.mybatis=DEBUG#log4j.logger.cn.tibet.cas.dao=DEBUG#log4j.logger.org.mybatis.common.jdbc.SimpleDataSource=DEBUG#log4j.logger.org.mybatis.common.jdbc.ScriptRunner=DEBUG#log4j.logger.org.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG#log4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.ResultSet=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG

编写pojo

package com.muan.pojo;public class User {    private int id;    private String name;    private String pwd;    public User() {    }    public User(int id, String name, String pwd) {        this.id = id;        this.name = name;        this.pwd = pwd;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", pwd='" + pwd + '\'' +                '}';    }}

编写User接口

package com.muan.dao;import com.muan.pojo.User;import java.util.List;import java.util.Map;public interface UserMapper {    //查询全部用户实现分页    List
selectUserByLimit(Map
map);}

配置mybatis-config.xml:加上别名配置,log4j配置

编写对应的userMapper.xml配置文件,并编写SQL语句

编写MyBatis工具类

package com.muan.utils;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;public class MyBatisUtils {    //类变量不需要设置默认值;    private static SqlSession sqlSession;    static {        //在maven中,所有的资源文件一般都放在resources目录下,我们可以直接拿到。        try {            String resource = "mybatis-config.xml";            InputStream inputStream = Resources.getResourceAsStream(resource);            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);            sqlSession= sqlSessionFactory.openSession();        } catch (IOException e) {            e.printStackTrace();        }    }    //设置SqlSessionFactory公共的方法    public static SqlSession getSqlSession(){        return sqlSession;    }}

测试,模拟分页

import com.muan.dao.UserMapper;import com.muan.pojo.User;import com.muan.utils.MyBatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.HashMap;import java.util.List;public class UserMapperTest {    //获取全部用户    @Test    public void getAllUserTest(){        //通过工具类获取sqlSessionFactory对象        SqlSession sqlSession = MyBatisUtils.getSqlSession();        //获取mapper队形,参数传入的是接口类的class对象        UserMapper mapper = sqlSession.getMapper(UserMapper.class);        int currentPage=1;//当前页面,(可以根据需求改动大小)        int pageSize=2;//页面大小,(可以根据需求改动大小)        //创建一个map集合        HashMap
map = new HashMap
(); map.put("startIndex",(currentPage-1)*pageSize); map.put("pageSize",pageSize); //通过mapper对象调用方法 List
users = mapper.selectUserByLimit(map); for (User user : users) { System.out.println(user); } }}

最后我们看一下输出结果,有日志的MyBatis是那么的靓

在这里插入图片描述

项目结构

在这里插入图片描述

转载地址:http://noiwi.baihongyu.com/

你可能感兴趣的文章
SQLite Tutorial 4 : How to export SQLite file into CSV or Excel file
查看>>
Optimizate objective function in matrix
查看>>
Convert polygon faces to triangles or quadrangles
查看>>
read obj in matlab
查看>>
find out the neighbour matrix of a mesh
查看>>
Operators and special characters in matlab
查看>>
As-Conformal-As-Possible Surface Registration
查看>>
qmake Variable Reference
查看>>
Lesson 2 Gradient Desent
查看>>
find border vertex
查看>>
matlab sliced variable
查看>>
create symbolic array
查看>>
TAUCS库的编译(vs2010)
查看>>
color vector using in plotting example points and lines between corresponding vertices
查看>>
mex 里面调用matlab函数
查看>>
matlab中cuda编程中分配grid和block dimension的时候的注意事项
查看>>
GPU CUDA and MEX Programming
查看>>
arrayfun用法
查看>>
矩阵积分
查看>>
optimization on macOS
查看>>