【Mybatis学习路线】day03配置文件的解析及优化

简介: 【Mybatis学习路线】day03配置文件的解析及优化

一:配置文件的解析

1.mybatis.config.xml解析

<?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>
    <!-- environments指mybatis可以配置多个环境,default指向默认的环境,
          每个SqlSessionFactory对应一个环境environment -->
          <properties resource="db.properties">
          </properties>
          <typeAliases>
             <!-- 为指定类型指定别名使得在mapper映射文件中可以简化引用 
             <typeAlias type="net.xyz.entiy.User"  alias="User"/>
             -->
             <!--为某个包下所有类指定别名,默认别名是对应的类名  -->
             <package name="net.xyz.entiy"/>
          </typeAliases>
      <environments default="development">    
    <environment id="development">
    <!-- JDBC这个配置直接使用JDBC的提交和回滚功能。它依赖于从数据源中获得链接来管理事务的生命周期
       -MANAGED这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让容器(例如:spring或者J2EE应用服务器)来管理事务的生命周期 -->      
      <transactionManager type="JDBC"/> 
      <!--  
               数据源类型:
               UNPOOLED -这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。耗费时间
               POOLED -这个数据源的实现缓存了JDBC连接对象,用于避免每次创建新的数据库连接时都初始化
                                  和进行认证,加快程序响应。并发web应用通常通过这种做法来快速响应。
      -->     
        <dataSource type="POOLED">        
        <property name="driver" value="${driver}"/>    
        <property name="url" value="${url}"/>        
        <property name="username" value="${username}"/>        
        <property name="password" value="${password}"/>      
      </dataSource>    
    </environment>  
  </environments>  
  <mappers>    
    <!-- 定义映射SQL语句的文件 -->
    <mapper resource="net/xyz/entiy/user.mapper.xml"/>  
  </mappers> 
</configuration>

2.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"> 
<!--  namespace命名空间,防止sql语句的id重名
      namespace命名包名+类名/包名+mapper文件名
      parameterType指sql语句参数类型
      resultType指返回结果类型
      useGeneratedKeys="true" 使用自增主键
      -->
<mapper namespace="net.xyz.entiy.UserMapper">
    <!--查询单个用户
    id在该文件中唯一  --> 
  <select id="selectUser" resultType="User">    
    select * from user where id = #{id}  
  </select> 
  <insert id="addUser" parameterType="net.xyz.entiy.User"  useGeneratedKeys="true">
     insert into user(username,userage) values(#{username},#{userage})
  </insert>
  <update id="updateUser" parameterType="net.xyz.entiy.User" >
     update user set username = #{username},userage=#{userage} where id=#{id}
  </update>
  <delete id="deleteUser" parameterType="net.xyz.entiy.User">
      delete from user where id=#{id}
  </delete>
  <select id="selectAllUser" resultType="User">
     select * from user
  </select>
</mapper>

3.mybatisUtil

public class MybatisUtil {
  /**
   * 
   * 通过配置文件创建SqlSessionFactory是一个SqlSession的工厂类
   */
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
      String resource = "mybatis.config..xml"; 
      InputStream inputStream = Resources.getResourceAsStream(resource); 
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      return sqlSessionFactory;
    }
    /**
     * SqlSession通过id找到对应的sql语句,执行sql语句
     * @return
     * @throws IOException
     */
    public static SqlSession getSession() throws IOException {
      SqlSessionFactory sqlSessionFactory =getSqlSessionFactory();
      SqlSession sqlSession =sqlSessionFactory.openSession();
      return sqlSession;
    }
}

4.mybatis的执行流程

读取核心配置文件—>sqlSessionFactory---->sqlSession---->(执行相关操作)

二:配置文件的优化

1.在src下导入properties配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
username=root
password=root

config.xml中引入properties文件

<properties resource="db.properties">

配置文件参数的替换

<transactionManager type="JDBC"/> 
      <!--  
               数据源类型:
               UNPOOLED -这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。耗费时间
               POOLED -这个数据源的实现缓存了JDBC连接对象,用于避免每次创建新的数据库连接时都初始化
                                  和进行认证,加快程序响应。并发web应用通常通过这种做法来快速响应。
      -->     
        <dataSource type="POOLED">        
        <property name="driver" value="${driver}"/>    
        <property name="url" value="${url}"/>        
        <property name="username" value="${username}"/>        
        <property name="password" value="${password}"/>      
      </dataSource>  

好处:便于对各种参数的修改

2.为指定类型指定别名

在configuration中加入<typeAliases>属性

既可以为指定类型指定别名,也可以为某个包下所有类指定别名

  <typeAliases>
             <!-- 为指定类型指定别名使得在mapper映射文件中可以简化引用 
             <typeAlias type="net.xyz.entiy.User"  alias="User"/>
             -->
             <!--为某个包下所有类指定别名,默认别名是对应的类名  -->
             <package name="net.xyz.entiy"/>
          </typeAliases>
相关文章
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3365 1
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
3670 10
|
弹性计算 运维 安全
优化管理与服务:操作系统控制平台的订阅功能解析
本文介绍了如何通过操作系统控制平台提升系统效率,优化资源利用。首先,通过阿里云官方平台开通服务并安装SysOM组件,体验操作系统控制平台的功能。接着,详细讲解了订阅管理功能,包括创建订阅、查看和管理ECS实例的私有YUM仓库权限。订阅私有YUM仓库能够集中管理软件包版本、提升安全性,并提供灵活的配置选项。最后总结指出,使用阿里云的订阅和私有YUM仓库功能,可以提高系统可靠性和运维效率,确保业务顺畅运行。
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
567 1
|
SQL Java 数据库连接
MyBatis的配置文件中定义类型别名(type aliases)的技巧。
类型别名提供了一种便捷的方式来引用复杂的全限定类名。通过使用 `<package>`标签进行自动扫描或使用 `<typeAlias>`标签手动指定,可以在整个MyBatis配置中提高清晰度和维护性。无论是简化mapper文件中的配置,还是提高整体的配置可读性,类型别名都是一个非常有用的配置工具。
476 0
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
1937 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
SQL 存储 Java
Mybatis源码解析:详述初始化过程
以上就是MyBatis的初始化过程,这个过程主要包括SqlSessionFactory的创建、配置文件的解析和加载、映射文件的加载、SqlSession的创建、SQL的执行和SqlSession的关闭。这个过程涉及到了MyBatis的核心类和接口,包括SqlSessionFactory、SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、Configuration、SqlSession和Executor等。通过这个过程,我们可以看出MyBatis的灵活性和强大性,它可以很好地支持定制化SQL、存储过程以及高级映射,同时也避免了几
334 20
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
410 0
|
XML Java 数据库连接
三、MyBatis核心配置文件详解
三、MyBatis核心配置文件详解
502 15
|
Java 关系型数据库 数据库连接
Javaweb之Mybatis入门程序的详细解析
本文详细介绍了一个MyBatis入门程序的创建过程,从环境准备、Maven项目创建、MyBatis配置、实体类和Mapper接口的定义,到工具类和测试类的编写。通过这个示例,读者可以了解MyBatis的基本使用方法,并在实际项目中应用这些知识。
408 11

推荐镜像

更多
  • DNS