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(新建的实体类)就可以解决

相关文章
|
7月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
745 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
9月前
|
Cloud Native 关系型数据库 分布式数据库
|
9月前
|
并行计算 关系型数据库 MySQL
如何用 esProc 将数据库表转储提速查询
当数据库查询因数据量大或繁忙变慢时,可借助 esProc 将数据导出为文件进行计算,大幅提升性能。以 MySQL 的 3000 万行订单数据为例,两个典型查询分别耗时 17.69s 和 63.22s。使用 esProc 转储为二进制行存文件 (btx) 或列存文件 (ctx),结合游标过滤与并行计算,性能显著提升。例如,ctx 并行计算将原查询时间缩短至 0.566s,TopN 运算提速达 30 倍。esProc 的简洁语法和高效文件格式,特别适合历史数据的复杂分析场景。
|
6月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
548 13
|
7月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
300 1
|
10月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
10月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
10月前
|
数据库
【YashanDB知识库】数据库用户所拥有的权限查询
【YashanDB知识库】数据库用户所拥有的权限查询
|
10月前
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
400 1