MyBatis 完整开发步骤(❗)

1、开发步骤

1.1、环境搭建

  1. 导入依赖
    • MySQL 驱动、MyBatis、连接池
    • 日志、分页
  2. 配置文件:数据源、日志等。
  3. 核心配置文件:通常命名 SqlMapConfig 或 mybatis-config。
  4. 工具类:生成 sqlSession。

1.2、开发

  1. 数据库:建表
  2. 实体类
  3. Mapper 接口
  4. 映射文件: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 接口方法参数类型。

      • 动态 SQL

      • ResultMap

        <?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 实例。

  1. 加载核心配置文件。

  2. 构建 sqlSessionFactory 工厂对象。

  3. 通过工厂创建 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();
        }
    }
    
posted @ 2021-07-29 22:36  Jaywee  阅读(83)  评论(0编辑  收藏  举报

👇