Mybatis学习笔记

Mybatis

配置文件常用属性设置

  1. properties标签
(1)新建properties文件
(2)导入properties文件:
<properties resource="jdbc.properties"/>
  1. typeAliases标签

    标签格式:<typeAliases  type="需要设置别名的类" alias="别名"></typeAliases>
    
  2. settings标签

    全局配置标签,写法如下,下列写法为将数据库返回值映射为驼峰式命名
    <settings>
            <setting name="mapUnderscoreToCamelCase" value="true"/>
        </settings>
    

resultMap标签的使用

  1. id标签

    进行数据库唯一主键映射所使用的标签
    <id column="数据库中的主键属性名"  property="实体类对应的属性名"></id>
    
  2. result标签

    对与数据库常规属性映射到实体类对应属性的标签
    <result column="数据库中的属性名"  property="实体类对应的属性名"><result>
    
  3. 处理一对多映射(实体类中有其他实体类的映射)

    方法1:
    <resultMap id="resultMapId" type="映射到的实体类型"> 
    <association property="映射到的实体类中的属性" javatype="映射到的属性的实体类类型">
        使用id和result标签
        </association>
    </resultMap>
    
    方法2:(级联)
    <result column="数据库中的属性名"  property="实体类对应的属性名.对应的属性"><result>
        
    方法3:(分布查询)
        <resultMap>
        <assocaiation property="主实体类对应的实体类属性名"
                      select="第二步查询依赖的接口全类名.方法名"
                      column="第一步查询返回的作为条件的属性">
            </assocaiation>
        </resultMap>
        
    
    1. 延迟加载

      延迟加载在分步查询的基础上进行,需要在全局配置中配置相关
      <setting name="lazyLoadingEnabled" value="true"/>//全局延迟加载,开启后所有关联查询均失效
      <setting name="aggressiveLazyLoading" value="true"/>//选择性延迟加载,可自定义是否延迟加载:        
       <resultMap>
          <assocaiation property="主实体类对应的实体类属性名" facthtype="eager"
                        select="第二步查询依赖的接口全类名.方法名"
                        column="第一步查询返回的作为条件的属性">
              </assocaiation>
          </resultMap>
      <-- facthtype来决定是否延迟加载"eager"立即加载,"lazy"延迟加载 -->
      
    2. 一对多关系映射

      <colletion proprety="主实体类中的集合属性名" oftype="集合的泛型">
      标签中使用常规Id标签和result标签来进行映射
      </colletion>
      
    3. 动态sql

      (1).if标签

      <if test="判断语句">
      满足条件后的操作
      </if>
      

      (2).where标签

      where标签可将if判断满足条件后语句的前多余的and消除,但语句最后多余的无法截取掉
      <where>
      <if test="判断语句">
      满足条件后的操作
      </if>
      </where>
      

      (3)trim标签

      <trim prefix="set" suffixOverrides=","></trim>
      prefix属性:在语句前添加指定内容
      suffix属性:在语句后添加指定内容
      suffixOverrides属性:截取掉语句后的指定内容
      prefixOverrides属性:截取掉语句前的指定内容
      

      (4)choose,when.otherwise标签组

      <choose>
          <when test="判断语句">
          满足条件后执行的操作
          </when>
          <otherwise>//类似else作用,但只能存在一个
          </otherwise>
      </choose>
      

      (5)foreach标签

      <foreach collection="被循环的数组或集合" item="接收每次循环得到的内容" open="循环结果以什么开头" close="循环结果以什么结束">
      </foreach>
      

二级缓存

开启二级缓存

1.配置全局配置

<setting name= "cacheEnabled" value="true"></setting>

2.配置映射文件

<cache 
       eviction="FIFO"//缓存原则(FIFO先进先出)
       flushInterval="60000"//有效时间
       size="512"//缓存数据数量
       readonly="true"/>//权限为只读
### 关于 MyBatis 学习教程与笔记 #### 创建数据库表结构 为了更好地理解如何使用 MyBatis 进行操作,先定义一个简单的 `blog` 表来存储博客的相关信息。此表包含了博客 ID、标题、作者名、创建时间和浏览次数等字段。 ```sql CREATE TABLE `blog`( `id` VARCHAR(50) NOT NULL COMMENT '博客 id', `title` VARCHAR(100) NOT NULL COMMENT '博客标题', `author` VARCHAR(30) NOT NULL COMMENT '博客作者', `create_time` DATETIME NOT NULL COMMENT '创建时间', `views` INT(30) NOT NULL COMMENT '浏览量' ) ENGINE=INNODB DEFAULT CHARSET=utf8; ``` 上述 SQL 语句用于创建名为 `blog` 的数据表[^2]。 #### 编写实体类 当构建应用程序时,通常会有一个对应的 Java 类代表每一张数据库表格。对于上面提到的 `blog` 表格而言,应该存在相应的 Blog 实体类: ```java public class Blog { private String id; private String title; private String author; private Date createTime; private Integer views; // Getters and Setters... } ``` 这里需要注意的是,在设计实体类的时候应当遵循一些最佳实践原则,比如尽量采用包装类型而非基本数据类型,并确保实体类中的属性名称以及其数据类型需同数据库表内的列保持一致[^3]。 #### 定义 Mapper 接口 接着就是定义映射器接口(Mapper Interface)。这些接口用来描述对特定对象的操作行为而无需关心具体的实现细节。下面是一个非常基础的例子——查询所有用户的列表: ```java import java.util.List; public interface UserMapper { /** * 查询所有的用户. * * @return 用户集合 */ List<User> findAll(); } ``` 这段代码展示了怎样去声明一个可以返回多个用户记录的方法。 #### 配置 XML 文件 最后一步是在 resources 资源目录下建立 XML 映射文件 usermapper.xml 来指定具体执行哪些 SQL 命令。这使得开发者能够轻松地管理复杂的 CRUD 操作而不必硬编码到程序逻辑里边。 ```xml <?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="com.example.mapper.UserMapper"> <!-- Select all users --> <select id="findAll" resultType="com.example.model.User"> SELECT * FROM users </select> </mapper> ``` 以上内容概括了有关 MyBatis 使用的基础知识点,包括但不限于环境设置、SQL 动态处理机制等方面的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值