Mybatis学习笔记
Mybatis学习笔记03
一、日志工厂
使用日志有利于我们排查错误
1.STDOUT_LOGGING
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
注意不要放错位置!
<!--注意大小写不能有错误特别注意不要乱加空格不然会报错而且很难找到这个错误-->
<setting name="logImpl" value="LOG4J"/>
2.LOG4J
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
然后在resource目录下创建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/hx.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
log4j文件的配置不用掌握,需要的时候去找一下博客配合博客使用
二、分页
分页可以有效减少数据的处理量
使用limit分页(常用)
//分页查询
List<User> getUserByLimit(Map<String,Integer> map);
<resultMap id="UserMap1" type="User">
<result column="id" property="id"/>
<result column="username" property="name"/>
<result column="password" property="password"/>
</resultMap>
<select id="getUserByLimit" parameterType="map" resultMap="UserMap1">
select * from day1118.user limit #{startIndex},#{pageSize}
</select>
三、使用注解开发
使用注解实现CRUD时不需要Mapper.xml
1.接口编写
@Select("select * from user")
List<User> getUsers();
//方法存在多个参数所有的参数前面都要加上@Param(“xxx”)注解
@Select("select * from user where id = #{id}")
User getUserByID(@Param("id") int id);
@Insert("insert into user(id,username,password) values (#{id},#{username},#{password}")
int addUser(User user);
@Update("update user set name=#{name},password=#{password} where id = #{id}")
int updateUser(User user);
@Delete("delete from user where id = #{uid}")
int deleteUser(@Param("uid") int id);
2.mybatis-config.xml中绑定接口
<mappers>
<mapper class="com.hx.dao.UserMapper"/>
</mappers>
4.@Param()注解
5.注解的实现机制本质是反射其底层实现是动态代理
6.小tips
增删改操作都需要提交事务,为了减轻代码量我们可以暂时设置一下MybatisUtils工具类,工作时为了避免错误还是不建议这样操作哦!
四、Mybatis详细执行流程
①Resources获取加载全局配置文件
②实例化SqlSessionFactoryBuilder构造器
③解析配置文件XMLConfigBuilder
④Configuration所有的配置信息
⑤实例化SqlSessionFactory
⑥Transactional事务管理器
⑦创建Executor执行器
⑧创建sqlSession
⑨实现CRUD
⑩执行不成功则回滚给事务管理器成功则提交事务最后sqlSession.close()
五、Lombok插件
1.导入依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
2.实体类上加上注解@Data
加上注解之后会自动帮我们生成无参构造、getter、setter、toString、hashcode、equals方法
package com.hx.pojo;
import lombok.Data;
@Data
public class Student {
private int id;
private String name;
//学生需要关联一个老师
private Teacher teacher;
}