MyBatis查询接收数据 批量删除

简介: MyBatis查询接收数据 批量删除


查询出的数据只有一条

通过实体类对象接收

mapper接口代码:


映射文件:

    <!--TUser getUserById(@Param("id") Integer id);-->
    <select id="getUserById" resultType="tUser">
        select * from t_user where id = #{id}
    </select>

通过List集合接收

mapper接口代码:


映射文件:

 <!--List<TUser> getUserById(@Param("id") Integer id);-->
    <select id="getUserById" resultType="tUser">
        select * from t_user where id = #{id}
    </select>

resultType属性里面此时是想将接收过来的数据库取来的字段转换成对应实体类的名称,但既然要转换成实体类对象,那肯定是有前提的,这个前提就是字段名与实体类属性一一对应


那么问题来了?
如果此时我们没有创建实体类来接收数据,那么接收数据该由谁来完成呢

通过map集合接收

mapper接口代码:


映射文件:

    <!--   Map<String,Object> getUserByIdToMap();-->
    <select id="getUserByIdToMap" resultType="java.util.Map">
        select * from t_user where id = #{id}
    </select>

查询出的数据有多条

通过list集合接收

mapper接口代码:


映射文件:

<!--List<TUser> getAllUser();-->
    <select id="getAllUser" resultType="tUser">
        select * from t_user
    </select>

通过map类型的list集合接收

mapper接口代码:


映射文件:

 <!--List<Map<String,Object>> getAllUserToMap();-->
    <select id="getAllUserToMap" resultType="map">
        select * from t_user;
    </select>

看到这里不知道大家有没有发现什么问题

我们明明没有在配置文件里面给Map类的全类名设置别名,为什么可以直接给这写成map呢?
MyBatis中设置了默认的类型别名

java.lang.Integer-->int,integer
int-->_int,_Integer
Map-->map
String-->string

@MapKey注解

如果接受多个数据时,我们没有实体类也不想用list集合
可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中

mapper接口:


映射文件:

  <!--Map<String,Object> getAllUserToMap();-->
    <select id="getAllUserToMap" resultType="map">
        select * from t_user;
    </select>

模糊查询

mapper接口:


映射文件:

    <!--List<TUser> getUserByLike(@Param("username")String username);-->
    <select id="getUserByLike" resultType="com.yc.mybatis.pojo.TUser">
        select * from t_user where username like '%${username}%'
       <!-- select * from t_user where username like concat('%',#{username},'%')-->
       <!--select * from t_user where username like "%"#{username}"%"-->
    </select>

批量删除

mapper接口:


映射文件:

    <!--int deleteMore(@Param("ids") String ids);-->
    <delete id="deleteMore">
        delete from t_user where id in(${ids})
    </delete>

${}和#{}的区别

#{}相当于事先给sql语句形成占位符,之后将占位符拿参数依次替换掉占位符

${}就可以想象成我们最开始学JDBC的时候sql语句拼接一样
所以为了防止SQL注入,一般都会选择#{}

但在模糊查询和批量删除的时候,却选择的时
因为


如果是#{}那sql语句会先变成’%?%‘,但在?被’‘包裹着,所以就起不到占位符的作用了

如果是#{}那么value值就会变为’1,2,3’,不符合参数条件

目录
相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
176 8
|
18天前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
13 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
53 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
23天前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
23 1
|
2月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
3月前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
264 1
|
3月前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
3月前
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
54 0
|
4月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
64 11
|
3月前
|
存储 SQL Java
MyBatis batchInsert 批量插入数据
MyBatis batchInsert 批量插入数据
78 0