-
一款优秀的持久层框架,支持自定义SQL、存储过程以及高级映射
-
免除了几乎所有JDBC代码以及设置参数和获取结果集的工作(JDBC的封装)
-
可通过简单的XML或注解配置和映射原始类型、接口和Java POJO(Plain Old Java Objects,普通老式Java对象)操作数据库
-
引入MyBatis和JDBC依赖
-
编写对应实体类和数据库信息
-
编写dao层接口
public interface UserDao { // 查询所有用户信息 ListselUser(); } -
dao层内配置与接口相关的xml文件(命名与接口名一致)
-
在src文件下配置xml全局配置文件
-
应用MyBatis
public static void main(String[] args) throws Exception { // 默认在src下读取文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 工厂模式:解析InputStream,生产sqlSession对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // SqlSession对象:放所有myBaits生成的DAO层接口的实现 SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取指定的接口实现 UserDao userDao = sqlSession.getMapper(UserDao.class); // 多态调用方法 List@Paramusers = userDao.selUser(); for (User user : users) { System.out.println(user); } // 更新类需要提交事务(sqlSession.commit();) // sqlSessoin是个资源,使用完毕后必须进行关闭 sqlSession.close(); }
接口(删除指定用户)
// @Param:对参数取别名
Integer deleteUser(@Param("id")Integer id);
接口对应的xml配置
映射器(mappers)DELETE FROM user WHERe uid = #{id}
注册mapper的配置文件(对应Dao接口的XML配置文件)
属性(properties)
可以引入外部的properties文件
-
外部建立properties文件
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF8 username=root password=123456
-
properties:引入properties文件(mybatis-config.xml)
-
通过${K}取值(mybatis-config.xml)
实体类取别名后,可直接使用别名(mybatis-config.xml)
拓展
使用标签自定义别名(不常用)
// 手动自定义别名
@Alias("user")
public class User {
private Integer id;
private String name;
}
其他配置
开启日志
记录系统运行过程(mybatis-config.xml)
开启第三日志
1、引入log4j依赖(log4j.jar)
2、在全局配置文件中开启log4j的日志
3、src中引入log4j配置文件(log4j.properties)
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制台 ###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=D://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
映射(mapping)
将数据库中的表中记录转为(映射)java实体类的对象
自动映射MyBatis自动将表中数据转为JAVA实体类对象
前提:(数据库)字段名与(实体类)属性名一致
方案一
SQL语句中为提取字段取别名
public class User {
private Integer uId;
private String uName;
private String uAge;
}
方案二
setting:开启驼峰命名转换
方案三
手动映射(对应接口的xml - mapper标签下)
查询语句中通过resultMap属性引入手动映射自定义id



