MyBatis 完整开发步骤(❗)
1、开发步骤
1.1、环境搭建
- 导入依赖
- MySQL 驱动、MyBatis、连接池
- 日志、分页
- 配置文件:数据源、日志等。
- 核心配置文件:通常命名 SqlMapConfig 或 mybatis-config。
- 工具类:生成 sqlSession。
1.2、开发
- 数据库:建表
- 实体类
- Mapper 接口
- 映射文件:Mapper.xml
2、相关文件
2.1、依赖
<!-- MySQL数据库连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 分页 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.3</version>
</dependency>
2.2、配置文件
2.2.1、数据源
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://数据库名:端口号?参数
jdbc.username=用户名
jdbc.password=密码
2.2.2、LOG4J 日志
log4j.properties
-
根配置
- 语法:
log4j.rootLogger = [ level ] , appenderName, …
- 将指定级别以上的日志信息,输出到指定位置,低于指定级别的日志信息不会被输出。
- 语法:
-
日志输出位置的相关配置
- appender 及相关选项
- 布局(输出格式)及相关选项
-
日志级别:官方建议实用的 4 个日志级别(优先级从高到低)
-
ERROR:严重错误。
-
WARN:警告,如 session 丢失。
-
INFO:要显示的信息。
-
DEBUG:调试信息。
# 根配置 log4j.rootLogger = [ level ] , appenderName, ... # 日志输出位置的相关配置 log4j.appender.appenderName = log4j.appender.appenderName.选项 = appender.appenderName.layout = appender.appenderName.layout.选项 = # 自定义日志级别 xxx = DEBUG xxx = INFO
-
示例
# 根配置
log4j.rootLogger = [ level ] , appenderName, ...
# 日志输出位置的相关配置
log4j.appender.appenderName =
log4j.appender.appenderName.选项 =
appender.appenderName.layout =
appender.appenderName.layout.选项 =
# 自定义日志级别
xxx = DEBUG
xxx = INFO
2.3、核心配置文件
-
约束信息:从 官方文档 复制即可
-
-
properties:引入外部配置文件。
-
setttings
- 命名映射:将数据库列名(xxx_yyy)自动映射为 Java 属性名(xxxYyy)
- 日志
-
typeAliases:别名
-
plugins:分页、MyBatis Plus 等
-
environments:需选择默认环境(可参考 JDBC)
- 事务管理器:JDBC
- 数据源:驱动、URL、用户名、密码
-
mappers:注意用
/
分隔符<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="jdbc.properties"/> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> <setting name="logImpl" value="具体实现类"/> </settings> <typeAliases> <package name="indi.jaywee.pojo"/> </typeAliases> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"/> </plugins> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <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> </configuration>
-
2.3、映射文件(Mapper.xml)
遵循命名规范,动态代理方式生成 DAO 层实现
-
约束信息:与核心配置文件相同。
-
映射信息
-
命名空间:唯一区分 SQL 映射文件,对应 Mapper 接口的全限类名。
-
SQL 标签
-
id:唯一区分该命名空间下的 SQL 语句,对应 Mapper 接口方法名。
-
resultType:结果类型,对应 Mapper 接口方法返回值。
-
parameterType:占位符为
#{}
,对应 Mapper 接口方法参数类型。 -
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace=""> <insert id="" resultType="" parameterType=""> </insert> </mapper>
-
-
2.4、工具类
构建
SqlSessionFactory
工厂,提供SqlSession
实例。
-
加载核心配置文件。
-
构建
sqlSessionFactory
工厂对象。 -
通过工厂创建
sqlSession
实例。public class MyBatisUtils { private static final SqlSessionFactory SQL_SESSION_FACTORY; static { String resource = "mybatis-config.xml"; InputStream is = null; try { // 加载核心配置文件 is = Resources.getResourceAsStream(resource); } catch (IOException e) { e.printStackTrace(); } // 构建sqlSessionFactory SQL_SESSION_FACTORY = new SqlSessionFactoryBuilder().build(is); } public static SqlSession getSqlSession() { // 创建sqlSession实例 return SQL_SESSION_FACTORY.openSession(); } }