栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis学习笔记总结【五】--日志、分页、注解和lombok

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis学习笔记总结【五】--日志、分页、注解和lombok

文章目录

日志

mybatis日志配置LOG4J | LOG4J2mybatis配置log4j 分页

使用limit分页RowBoundsPageHelper 注解

实现本质 LomBok

使用步骤优缺点

日志

如果一个数据库操作出现了异常,我们需要排错,日志就是最好的助手。
曾经:sout,debug
现在:日志工厂

mybatis日志配置


在mybatis中具体使用哪个日志实现,在设置中设定!
STDOUT_LOGGING标准日志输出


    

LOG4J | LOG4J2

log4j是Aoache的一个开源项目,通过使用,我们可以控制日志信息输送到目的地是控制台、文件、GUI组件;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致的控制日志的生成过程通过一个配置文件来灵活的进行配置,而不需要修改代码Apache Log4j2 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了显着改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。Apache Log4j2 版本 2.0-beta7 到 2.17.0(不包括安全修复版本 2.3.2 和 2.12.4)容易受到远程代码执行 (RCE) 攻击,在这种攻击中,有权修改日志配置文件的攻击者可以构建恶意配置将 JDBC Appender 与引用 JNDI URI 的数据源一起使用,该 JNDI URI 可以执行远程代码。此问题已通过将 JNDI 数据源名称限制为 Log4j2 版本 2.17.1、2.12.4 和 2.3.2 中的 java 协议来解决 mybatis配置log4j

1.先导入log4j包


    log4j
    log4j
    1.2.17

2.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/shi.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

3.配置log4j为日志的实现


    

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

static Logger logger = Logger.getLogger(UserDaoTest.class);

3.日志级别

logger.info("info:");
logger.debug("debug");
logger.error("error");
分页

为什么要分页:

减少数据的处理量 使用limit分页

语法:SELECt * from user limit startIndex,pageSize
例如: SELECt * from user limit 3; #【1,3】
RowBounds

mybatis 自带的 RowBounds。Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,属于逻辑分页,即拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据。而非物理分页,直接从数据库中拿出我们需要的数据。
1.接口

List getUserByRowBounds();

2.mapper.xml


	select * from user

3.测试

@Test
public void getUserByRowBounds(){
	SqlSession sqlSession = Mybatisutils.getSqlSession();
	//RowBounds实现
	RowBounds rowbounds = new RowBounds(1, 2);
	//通过Java代码层面实现分页
	List userList = 
	SqlSession.selectList("com.sqs.UserMapper.getUserByRowBounds", null, rowBounds);
	for(User user: usreList){
		system.out.println(user);
	}
	sqlSession.close();
}
PageHelper

1.在pom.xml引入PageHelper的依赖


    com.github.pagehelper
    pagehelper
    5.2.0



2.在mybatis的全局配置文件中配置PageHelper分页插件





    
        
    

3.测试

public void testQueryUserListLikeName() {
    //设置分页条件,Parameters:pageNum 页码pageSize 每页显示数量count 是否进行count查询
    PageHelper.startPage(1, 3, true);
    List users = this.userMapper.queryUserListLikeName(null);

	//可以使用PageInfo 查看分页信息
	PageInfo pageInfo = new PageInfo(users);
    //打印分页信息
    System.out.println("数据总数:" + pageInfo.getTotal());
    System.out.println("数据总页数:" + pageInfo.getPages());
    System.out.println("最后一页:" + pageInfo.getLastPage());
    
    for (User user : users) {
        System.out.println(user);
    }
}
注解

注解提供了一种简单且低成本的方式来实现简单的映射语句。

实现

1.注解在接口上实现

public interface TeacherMapper {

    @Select("select * from teacher where id=#{id}")
    Teacher getTeacher(@Param("id") int id);
}

2.需要在核心配置文件中绑定接口

    
        
    
本质

反射机制实现
底层:动态代理

LomBok

lombok可以通过简单的注解的形式来帮助我们简化和消除一些必须有但显得很臃肿的Java代码,比如常见的Getter&Setter、toString()、构造函数等等。lombok不仅方便编写,同时也让我们的代码更简洁。
lombok提供了一个功能完整的jar包,可以很方便的与我们的项目进行集成。

使用步骤

1.在IDEA中安装Lombok插件
2.在项目中导入lombok的jar包


	 org.projectlombok
	 lombok
	 1.18.10

3.在实体类上加注解即可

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher {
    private int id;
    private String name;
}

@Data:作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor@NoArgsConstructor:生成无参构造器;@AllArgsConstructor:生成全参构造器 优缺点

优点:

1.能够通过注解的形式自动生成构造器、get/set方法、equals、hashcode、toString等方法,提高了一定的开发效率2.让代码变得简洁,不用过多的关注相应的方法3.属性做修改时,也简化了维护这些属性所生成的get/set方法等
缺点:1.不支持多种参数构造器的重载2.虽然省去了手动创建get/set方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读代码的舒适度

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号