狂神说 Mybatis详细笔记

狂神说 Mybatis详细笔记,第1张

狂神说 Mybatis详细笔记 6、日志 6.1 日志工厂

如果一个数据库 *** 作,出现了异常,我们需要排错,日志就是最好的助手!

曾经:sout、debug

现在:日志工

  • SLF4J
  • LOG4J 【掌握】
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING 【掌握】
  • NO_LOGGING

在MyBatis中具体使用哪一个日志实现,在设置中设定

STDOUT_LOGGING


    

6.2 Log4j

什么是Log4j?

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件;
  • 我们也可以控制每一条日志的输出格式;
  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程;
  • 最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
  1. 先导入log4j的包

    log4j
    log4j
    1.2.17

  1. log4j.properties
#将等级为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/rzp.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.sq1.PreparedStatement=DEBUG
  1. 配置settings为log4j实现

    

  1. 测试运行

Log4j简单使用
6. 在要使用Log4j的类中,导入包 import org.apache.log4j.Logger;
7. 日志对象,参数为当前类的class对象

Logger logger = Logger.getLogger(UserDaoTest.class);
  1. 日志级别
logger.info("info: 测试log4j");
logger.debug("debug: 测试log4j");
logger.error("error:测试log4j");
7、分页

思考:为什么分页

  • 减少数据的处理量
7.1 使用Limit分页
SELECt * from user limit startIndex,pageSize 
  1. 接口
//分页
List getUserByLimit(Map map);
  1. Mapper.xml

    select * from user limit #{startIndex},#{pageSize}

  1. 测试
 @Test
    public void getUserByLimit(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap map = new HashMap();
        map.put("startIndex",1);
        map.put("pageSize",2);
        List list = mapper.getUserByLimit(map);
        for (User user : list) {
            System.out.println(user);
        }
    }
7.2 RowBounds

不再使用SQL实现分页

  1. 接口
//分页2
List getUserByRowBounds();
  1. mapper.xml

    select * from student


    
    
    
    


        select s.id sid , s.name sname, t.name tname
        from student s,teacher t
        where s.tid=t.id
    
    
    
        
        
        
            
        
    

回顾Mysql多对一查询方式:

子查询 (按照查询嵌套)
联表查询 (按照结果嵌套)

11、一对多处理

一个老师多个学生;
对于老师而言,就是一对多的关系;

11.1 环境搭建

实体类

@Data
public class Student {
    private int id;
    private String name;
    private int tid;
}
@Data
public class Teacher {
    private int id;
    private String name;

    //一个老师拥有多个学生
    private List students;
}
11.2 按照结果嵌套嵌套处理

    select * from mybatis.blog where 1=1
    
        and title = #{title}
    
    
        and author = #{author}
    

12.2 choose、when、otherwise 示例

    select * from mybatis.blog
    
        
    

注意:
  • 最好基于单表
  • sql里不要存在where标签
12.5 for-each 示例

xml


        select * from user where id = #{id}

13.6 自定义缓存
  1. 导包

    org.mybatis.caches
    mybatis-ehcache
    1.2.1

  1. 在mapper中指定使用我们的ehcache缓存实现

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5481416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存