Mybatis快速入门--映射文件(二)(优化版)

简介: Mybatis快速入门--映射文件(二)(优化版)

参数传递


Mybatis获取参数值的两种方式:${}和#{}

${}本质字符串拼接(可能造成sql注入)

{}本质占位符赋值


单个参数


可以接受基本类型,对象类型,集合类型的值。

这种情况MyBatis可值接使用这个参数﹐不需要经过任何处理。

如下:

AccountMapper接口中的deleteById方法只有一个参数,MyBatis可值接使用这个参数﹐不需要经过任何处理。

package com.caq.study.mapper;
import com.caq.study.entity.Account;
public interface AccountMapper {
    boolean deleteById(Integer id);
}


多个参数


任意多个参数,都会被MyBatis重新包装成一个Map传入。

Map的key是param1 , param2 ,paramn

或者传入索引值0,1...,值就是参数的值

image.png

多个参数的情况一般不这样传,一般通过注解@Param来给参数命名,这样能做到见名之意

为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中, key就是我们自己指定的名字

image.png

#{key}里面的key值不能写成原参数名,要么通过@params指定,要么写param1 , param2 ....

多个参数会被封装成一个map

key:使用@Param注解指定的值

value:参数值

{指定的key}取出对应的参数值

image.png


POJO


一般增、改数据的时候,我们会直接传入一个实体类(pojo)

当这些参数属于我们业务POJO时,我们直接传递POJO


Map


传递Map的情况适用于多个参数且参数不属于pojo,不经常使用,为了方便,可传入map

image.png


DTO


DTO:数据传输对象

传递DTO的情况适用于多个参数且参数不属于pojo,但经常使用,为了方便,可传入DTO


特殊情况


如果我们这样传:
Account selectById(@Param("id") Integer id,String name);
取值: id==>#{id/ param1}lastName==>#{param2}
如果是Collection (List、Set)类型或者是数组,
也会特殊处理。也是把传入的list或者数组封装在map中
key: collection (collection),如果是List还可以使用这个key(list)
数组(array)
public Employee getEmpById(List<Integer> ids);
取值:取出第一个id的值:#{list[0]}



相关文章
|
4月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
2月前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
138 5
|
4月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
4月前
|
SQL XML Java
七、MyBatis自定义映射resultMap
七、MyBatis自定义映射resultMap
98 6
|
4月前
|
Java 数据库连接 mybatis
MyBatis篇-映射关系(1-1 1-n n-n)
本文介绍了MyBatis中四种常见关系映射的配置方法,包括一对一、一对多、多对一和多对多。**一对一**通过`resultMap`实现属性与字段的映射;**一对多**以用户-角色为例,使用`&lt;collection&gt;`标签关联集合数据;**多对一**以作者-博客为例,利用`&lt;association&gt;`实现关联;**多对多**则通过引入第三方类(如UserForDept)分别在User和Dept类中添加集合属性,并配置对应的`&lt;collection&gt;`标签完成映射。这些方法解决了复杂数据关系的处理问题,提升了开发效率。
|
7月前
|
XML Java 数据库连接
Mybatis映射关系
简介:本文介绍了MyBatis框架中四种常见的关系映射方式,包括一对一、一对多、多对一及多对多。一对一通过简单属性映射实现;一对多通过在主对象中添加集合属性并使用`&lt;collection&gt;`标签映射子对象集合;多对一则利用`&lt;association&gt;`标签在主对象中映射单个子对象;多对多需引入第三方类,分别在两个主对象中添加对方的集合属性,并通过`&lt;collection&gt;`标签实现映射。
137 32
|
7月前
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
456 13
|
8月前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
8月前
|
SQL Java 数据库连接
MyBatis-Plus快速入门:从安装到第一个Demo
本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。
2508 0
MyBatis-Plus快速入门:从安装到第一个Demo
|
10月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用