MyBatis框架搭建及教程(详解)下

简介: MyBatis框架搭建及教程(详解)

3.4,where标签:处理查询条件:

如果在多重if条件的查询过程中,如果在where条件中,没有设置条件1=1那么可能就会变成下面这样一条错误的语句:


SELECT id,name,url,age,country FROM website AND name LIKE CONCAT('%',#{name},'%')


显然以上语句会出现 SQL 语法异常,但加入“1=1”这样的条件又非常奇怪,所以 MyBatis 提供了 where 标签。主要用来简化 SQL 语句中的条件判断,可以自动处理 AND/OR 条件,语法如下:


<where>
    <if test="判断条件">
        AND/OR ...
    </if>
</where>


if 语句中判断条件为 true 时,where 关键字才会加入到组装的 SQL 里面,否则就不加入。where 会检索语句,它会将 where 后的第一个 SQL 条件语句的 AND 或者 OR 关键词去掉。


3.5,set标签:动态更新:

在 Mybatis 中,update 语句可以使用 set 标签动态更新列。set 标签可以为 SQL 语句动态的添加 set 关键字,剔除追加到条件末尾多余的逗号。


<update id="updateRoute" parameterType="com.xinxi2.bean.Route">
        update route
        <set>
            <if test="id!=null">
                id=#{id},
            </if>
            <if test="name!=null">
                `name`=#{name},
            </if>
            <if test="mileage!=null">
                mileage=#{mileage},
            </if>
        </set>
            where id=#{id}
    </update>


3.6,foreach 标签:迭代遍历:

当SQL 语句中含有 in关键字进行列表值匹配时,需要迭代条件集合来生成的情况,可以使用 foreach来实现 SQL 条件的迭代。


Mybatis foreach 标签用于循环语句,它很好的支持了数据和 List、set接口的集合,并对此提供遍历的功能。语法格式如下:


<foreach item="item" index="index" collection="list|array|map key" open="(" separator="," close=")">
    参数值
</foreach>


foreach 标签主要有以下属性,说明如下。


  1. item:表示集合中每一个元素进行迭代时的别名。
  2. index:指定一个名字,表示在迭代过程中每次迭代到的位置。
  3. open:表示该语句以什么开始,既然是 in 条件语句,所以必然以(开始。
  4. separator:表示在每次进行迭代之间以什么符号作为分隔符,既然是 in 条件语句,所以必然以,作为分隔符。
  5. close:表示该语句以什么结束,既然是 in 条件语句,所以必然以)结束。
  6. 使用 foreach 标签时, collection属性是必选,但在不同情况下该属性的值是不一样的,主要有以下 3种情况
  7. 如果传入的是单参数且参数类型是一个 List,collection属性值为 list。
  8. 如果传入的是单参数且参数类型是一个 array 数组,collection的属性值为 array。
  9. 如果传入的参数是多个,需要把它们封装成一个Map,当然单参数也可以封装成 Map。Map 的 key 是参数名,collection 属性值是传入的 List 或 array 对象在自己封装的 Map 中的 key。


四,关联查询:


4.1,概述:

关联关系是一个数据库实体的概念,有 3 种级联关系,分别是一对一级联、一对多级联以及多对多级联。例如,一个角色可以分配给多个用户,也可以只分配给一个用户。大部分场景下,我们都需要获取角色信息和用户信息,所以会经常遇见以下 SQL。


SELECT r.*,u.* FROM t_role r
INNER JOIN t_user_role ur ON r.id = ur.id
INNER JOIN t_user u ON ur.user_id = u.id
WHERE r.id = #{id}


在级联中存在 3 种对应关系。


  1. 一对多,例如:角色和用户、项目组和软件工程师、用户和收货地址。
  2. 一对一,例如:商品简介和商品详情、学生基本信息和学籍档案信息。
  3. 多对多,例如:订单与商品、玩家与组队,例如:订单与商品、玩家与组队


4.2,一对一关联查询:

一对一级联关系在现实生活中是十分常见的,例如:一个学生基本信息对应一个学籍档案。


在 MyBatis 中,通过 元素的子元素 处理一对一级联关系。示例代码如下:


<association property="studentCard" column="cardId"
            javaType="com.apesource.entity.StudentCard"
            select="com.apesource.mapper.StudentCardMapper.selectStuCardById" />


在 元素中通常使用以下属性。


  1. property:指定映射到实体类的对象属性。
  2. column:指定表中对应的字段(即查询返回的列名)。
  3. javaType:指定映射到实体对象属性的类型。
  4. select:指定引入嵌套查询的子 SQL 语句,该属性用于关联映射中的嵌套查询
  5. 一对一关联查询可采用以下两种方式:
  6. 分步查询,通过两次或多次查询,为一对一关系的实体 Bean 赋值。
  7. 单步查询,通过关联查询实现。


4.3,多对多关联查询:

实际应用中,由于多对多的关系比较复杂,会增加理解和关联的复杂度,所以应用较少。MyBatis没有实现多对多级联,推荐通过两个一对多级联替换多对多级联,以降低关系的复杂度,简化程序。


例如,一个订单可以有多种商品,一种商品可以对应多个订单,订单与商品就是多对多的级联关系。可以使用一个中间表(订单记录表)将多对多级联转换成两个一对多的关系。


相关文章
|
1月前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
1月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
48 1
持久层框架MyBatisPlus
|
1月前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
1月前
|
SQL 存储 数据库
深入理解@TableField注解的使用-MybatisPlus教程
`@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程
188 3
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
556 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
63 0
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
XML 缓存 Java
一文讲明Mybatis 的使用 超详细 【爆肝两万字教程】
文章提供了一份详尽的Mybatis使用教程,涵盖了Mybatis的简介、环境搭建、基本操作、配置解析、日志使用、分页、注解开发、多对一和一对多关系处理、动态SQL以及缓存机制等方面的内容,并提供了相应的代码示例和测试用例。
一文讲明Mybatis 的使用 超详细 【爆肝两万字教程】
|
4月前
|
Java 数据库连接 mybatis
mybatis框架图
文章介绍了MyBatis框架的起源、发展和其作为持久层框架的功能,提供了MyBatis的框架图以帮助理解其结构和组件。
mybatis框架图
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
296 0