关于mybatis中查询结果映射对象中,不正确的问题原因

这篇博客介绍了在MyBatis的XML映射文件中,resultMap的定义如何与查询语句中的resultMap属性保持一致以确保正确地将数据库查询结果映射到指定的对象上。内容详细阐述了resultMap的各项配置,包括id和result元素的使用,以及在select查询语句中引用resultMap的方式,以实现数据的正确绑定和转换。同时,文中还展示了具体的XML配置示例,帮助读者理解这一关键配置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在xml文件中,文件最上面定义的resultMap要和下面查询语句中的resultMap保持一致,才能够返回正确的结果,并将查询结果正确的映射到该对象上面。

<?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">

<mapper namespace="com.lk.web.dao.UserInfoMapper">

<resultMap id="BaseResultMapUser" type="com.lk.web.model.UserInfoExtended">

<id column="user_id" jdbcType="INTEGER" property="userId" />

    <result column="parent_user_id" jdbcType="INTEGER" property="parentUserId" />

    <result column="login_name" jdbcType="VARCHAR" property="loginName" />

    <result column="phone" jdbcType="VARCHAR" property="phone" />

    <result column="salt" jdbcType="VARCHAR" property="salt" />

    <result column="password" jdbcType="VARCHAR" property="password" />

    <result column="user_class" jdbcType="INTEGER" property="userClass" />

    <result column="name" jdbcType="VARCHAR" property="name" />

    <result column="company" jdbcType="VARCHAR" property="company" />

    <result column="poic_id" jdbcType="INTEGER" property="poicId" />

    <result column="city_id" jdbcType="INTEGER" property="cityId" />

    <result column="cuty_dsrc_id" jdbcType="INTEGER" property="cutyDsrcId" />

    <result column="user_photo" jdbcType="VARCHAR" property="userPhoto" />

    <result column="user_indate" jdbcType="DATE" property="userIndate" />

    <result column="user_lock" jdbcType="INTEGER" property="userLock" />

    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />

    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />

    <result column="remark" jdbcType="VARCHAR" property="remark" />

    <result column="bak" jdbcType="VARCHAR" property="bak" />

    <result column="poic_name" jdbcType="VARCHAR" property="poicName" />

<result column="city_name" jdbcType="VARCHAR" property="cityName" />

<result column="cuty_dsrc_name" jdbcType="VARCHAR" property="cutyDsrcName" />

<result column="user_class_name" jdbcType="VARCHAR" property="userClassName" />

<result column="permission_list" jdbcType="VARCHAR" property="permissionList" />

</resultMap>

上面是定义的对象和属性信息

下面说查询语句中标注红色部分

<select id="findUserPerInfoList" parameterType="com.lk.web.model.UserInfoExtended" resultMap="BaseResultMapUser" >

   SELECT u.user_id,u.login_name, u.name,u.phone, u.user_class, ucd.user_class_name,cp.permission_list

   FROM gf_user_info u

        LEFT JOIN gf_class_permission cp

        ON u.user_class=cp.user_class

        LEFT JOIN gf_user_class_dic ucd

        ON u.user_class=ucd.user_class

        WHERE

    <trim suffixOverrides="and">

    u.user_class!=1

    </trim>

    ORDER  BY u.user_id DESC

<if test="page!= null and page.pageSize != null">

limit #{page.start, jdbcType=INTEGER}

,#{page.pageSize,jdbcType=INTEGER}

</if>

  </select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值