Mysql系列---【mysql结果集的处理】

1.查询返回的结果的表中字段名与实体类的属性名不一致时。( resultType(输出结果类型)

resultType可以指定将查询结果映射为Pojo,但需要Pojo的属性名和Sql查询的列名一致方可映射成功。如果Sql查询字段名和Pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 resultMap实质上还需要将查询结果映射到Pojo对象中。

 

由于mapper.xmlSql查询列(user_id)Order类属性(userId)不一致,所以查询结果不能映射到Pojo中。

 

需要定义resultMap,把orderResultMapSql查询列(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的思想。

 

posted on   少年攻城狮  阅读(537)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 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
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示