MyBatis查询数据库(3)(二)

简介: MyBatis查询数据库(3)

MyBatis查询数据库(3)(一)https://developer.aliyun.com/article/1393184

2、多表查询🍉

如果是增、删、改返回搜影响的行数,那么在 UserMapper.xml 中是可以不设置返回的类型的,如:


<insert id="add">
        insert into userinfo(username,password) values(#{username},#{password})
    </insert>
    <delete id="delById">
        delete from userinfo where id=#{id}
    </delete>
    <update id="upUserName">
        update userinfo set username=#{username} where id=#{id}
    </update>

然而即使是最简单查询用户的名称也要设置返回的类型,否则会出现如下错误:

查询不设置返回类型的错误示例演示:

controller 代码:


@RequestMapping("/getname")
public String getNameById(Integer id) {
     return userService.getNameById(id);
}

UserMapper.xml 实现代码:


<select id="getNameById">
        select username from userinfo where id=#{id}
</select>

访问接口执行结果如下:

image.png

显示运行了⼀个查询但没有找到结果映射,也就是说对于 id 属性:用于标识实现接口中的那个方法;结果映射属性:结果映射有两种实现标签:Ⅰ、返回类型:resultType  🍓绝大数查询场景可以使⽤ resultType 进行返回,如下代码所示:它的优点是使用方便,直接定义到某个实体类即可。Ⅱ、返回字典映射:resultMap 🍓resultMap使用场景:字段名称和程序中的属性名不同的情况,可使用 resultMap 配置映射;⼀对⼀和⼀对多关系可以使用 resultMap 映射并查询数据。当程序中的属性值与数据库中的字段名不一样时🍒我们去单元测试,进行用户的查询:打印出来就发现,name没有被赋值,为null,这就是因为字段名与属性值不一样的结果。这个时候就可以使用 resultMap 了,resultMap 的使用如下:UserMapper.xml:这样查询的结果就有值了,如下图所示:或者使用as关键字(数据库重命名)🍒如果你一定需要使用resultType,也是可以实现的:Ⅲ、多表查询🍓在多表查询时,如果使用 resultType 标签,在⼀个类中包含了另⼀个对象是查询不出来被包含的对象的,比如以下实体类:程序的执行结果如下图所示:此时我们就需要使用特殊的手段来实现联表查询了。通过VO对象🍒ArticleInfoVO对象ArticleMapper.xml进行多表程序:单元测试:单元测试成功,查询到了用户id为5的 文章表的文章信息 和 用户表中的用户名:大部分时候多表联查解决方案:联表查询语句(left join/inner)+xxxVO(新建的实体类)就可以解决

相关文章
|
6天前
|
数据库
|
24天前
|
存储 人工智能 监控
时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。
40 0
|
2月前
|
XML Java 数据库连接
Mybatis一对一,一对多关联查询
## MyBatis一对一、一对多关联查询详解 MyBatis是一款优秀的持久层框架,提供了灵活的SQL映射功能,支持复杂的数据库操作。本文将详细介绍MyBatis中一对一和一对多关联查询的实现。 ### 一对一关联查询 一对一关联关系指的是一个表中的一条记录与另一个表中的一条记录相关联。例如,一个用户有一个地址信息。 #### 数据库表设计 假设有两个表:`user`和 `address`。 ``` CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE address
56 18
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
178 6
|
2月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
99 2
|
4月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
678 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
2月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
546 0
|
3月前
|
XML Java 数据库连接
Mybatis实现RBAC权限模型查询
通过对RBAC权限模型的理解和MyBatis的灵活使用,我们可以高效地实现复杂的权限管理功能,为应用程序的安全性和可维护性提供有力支持。
88 5
|
3月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
58 6
|
3月前
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
219 3