MyBatis简介 | MyBatis搭建流程
MyBatis
- 一、MyBatis简介
-
-
- 1、MyBatis 发展历程
- 2、MyBatis 特性
- 3、MyBatis 下载
- 4、MyBatis VS 其他技术
-
-
- 1)JDBC
- 2)Hibernate 和 JPA
- 3)MyBatis
-
-
- 二、MyBatis 搭建流程案例
-
-
- 1、项目结构
- 2、导入依赖
- 3、创建MyBatis的核心配置文件mybatis-config.xml
- 4、创建User实体类,对应于数据库的user表
- 5、创建UserMapper接口
- 6、创建UserMapper的映射文件
- 7、测试方法
- 8、测试结果
- 9、补充:加入日志功能
-
-
- 1)导入依赖
- 2)加入log4j的配置文件 log4j.xml
-
-
一、MyBatis简介
1、MyBatis 发展历程
- MyBatis最初是Apache公司的一个开源项目,命名为iBatis。
- 2010年该开发团队转投到了Google Code旗下,更名为MyBatis。
- 2013年将开源代码迁移到了Github。
2、MyBatis 特性
- MyBatis是一个非常优秀的持久层框架,支持定制化 SQL、存储过程和高级映射。
- MyBatis是一个半自动的ORM框架。
- ORM (Object Relation Mapping) 对象关系映射。
- 数据库表 POJO实体类。
- MyBatis无需手动实现几乎所有的JDBC代码,无需手动设置参数以及手动获取结果集。
- MyBatis可以使用xml方式开发,也可以使用注解方式开发。
3、MyBatis 下载
- 在第一部分“MyBatis 发展历程”中提到过在2013年的时候MyBatis将开源代码迁移到了Github中,我们直接去Github中下载即可。
MyBatis下载
4、MyBatis VS 其他技术
1)JDBC
- 代码冗长,开发效率低。
- SQL语句需要写在Java代码中,耦合性高,不易维护。
2)Hibernate 和 JPA
- 基于全映射的全自动框架,我们无需自己定义SQL方法,需要时直接调用即可(既是优点,同时也是缺点)。操作简便,开发效率高。
- POJO类中的部分字段映射比较困难。
- 不支持 长、难、复杂的SQL语句。
3)MyBatis
- 轻量级框架。
- 实现了Java代码与SQL语句相分离,Java代码专注于处理业务,SQL语句专注于处理数据。
- 开发效率较Hibernate 稍低。
二、MyBatis 搭建流程案例
1、项目结构
2、导入依赖
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency></dependencies>
3、创建MyBatis的核心配置文件mybatis-config.xml
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mappers/UserMapper.xml"></mapper> </mappers></configuration>
- 通常情况下,MyBatis的核心配置文件我们都会将其命名为"mybatis-config.xml",也可以使用其他名称。
4、创建User实体类,对应于数据库的user表
public class User { private Integer id; private String username; private Integer age; private String password; // 省略构造方法、get和set方法以及toString方法}
对应user表
5、创建UserMapper接口
public interface UserMapper { / * 添加用户操作 * @return */ public int insertUser();}
6、创建UserMapper的映射文件
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="mapper.UserMapper"> <insert id="insertUser"> insert into user values(null,"qdxorigin",22,"123456"); </insert></mapper>
- 涉及到两个对应关系
- mapper 接口的全类名与映射文件的 namespace 命名空间保持一致。
- mapper 接口中的方法名与映射文件中的SQL标签的 id 值保持一致。
- ORM 对象关系映射
Java概念 | 数据库概念 |
---|---|
类 | 表 |
属性 | 字段 / 列 |
对象 | 记录 / 行 |
7、测试方法
public class UserMapperTest { @Test public void test1() throws IOException { // 1、读取MyBatis核心配置文件mybatis-config.xml InputStream input = Resources.getResourceAsStream("mybatis-config.xml"); // 2、创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 3、创建SqlSessionFactory对象 SqlSessionFactory factory = builder.build(input); // 4、创建sqlSession对象,传入true开启事务自动提交 SqlSession sqlSession = factory.openSession(true); // 5、获取到UserMapper对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 6、测试定义的添加用户方法 int i = mapper.insertUser(); // 7、打印返回值,如果打印1表示添加成功 System.out.println(i); }}
8、测试结果
1
数据库user表记录
成功添加进数据库表中。
9、补充:加入日志功能
1)导入依赖
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version></dependency>
2)加入log4j的配置文件 log4j.xml
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /> </layout> </appender> <logger name="java.sql"> <level value="debug" /> </logger> <logger name="org.apache.ibatis"> <level value="info" /> </logger> <root> <level value="debug" /> <appender-ref ref="STDOUT" /> </root></log4j:configuration>
- 需要时直接该段代码导入即可,无需深究。
- 日志的level级别
- FATAL(致命) > ERROR(错误) > WARN(警告) > INFO(信息) > DEBUG(调试)
- FATAL级别最高,打印的内容最少。DEBUG级别最低,打印的东西最多。