Mysql系列---【mysql结果集的处理】
1.查询返回的结果的表中字段名与实体类的属性名不一致时。( resultType(输出结果类型))
resultType可以指定将查询结果映射为Pojo,但需要Pojo的属性名和Sql查询的列名一致方可映射成功。如果Sql查询字段名和Pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到Pojo对象中。
由于mapper.xml中Sql查询列(user_id)和Order类属性(userId)不一致,所以查询结果不能映射到Pojo中。
需要定义resultMap,把orderResultMap将Sql查询列(user_id)和Order类属性(userId)对应起来
改造OrderMapper.xml,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,Mapper动态代理开发的时候使用,需要指定Mapper的类路径 --> <mapper namespace= "com.itheima.mybatis.mapper.OrdersMapper" > <!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo --> <!-- id:设置ResultMap的id --> <resultMap type= "orders" id= "orderResultMap" > <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id --> <!-- property:主键在pojo中的属性名 --> <!-- column:主键在数据库中的列名 --> <id property= "id" column= "id" /> <!-- 定义普通属性 --> <result property= "userId" column= "user_id" /> <result property= "number" column= "number" /> <result property= "createtime" column= "createtime" /> <result property= "note" column= "note" /> </resultMap> <!-- 查询所有的订单数据 --> <select id= "queryOrdersAll" resultMap= "orderResultMap" > SELECT id, user_id, number, createtime, note FROM orders </select> </mapper> |
2.插入一个对象后,如何把自增主键返回
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!-- 保存用户 --> <insert id= "saveUser" parameterType= "com.itheima.mybatis.pojo.User" > <!-- selectKey 标签实现主键返回 --> <!-- keyProperty:主键对应的pojo中的哪一个属性 --> <!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql --> <!-- resultType:设置返回的id的类型 --> <selectKey keyProperty= "id" order= "AFTER" resultType= "Integer" > SELECT LAST_INSERT_ID() </selectKey> INSERT INTO USER (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address}) </insert> |
LAST_INSERT_ID():是Mysql的函数,返回auto_increment自增列新记录id值。
效果如下图所示:
3.查询条件为多个条件,这些条件不在一个pojo类中时,采用重新封装pojo的思想。
愿你走出半生,归来仍是少年!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?