mybatis 一对一关联 association 返回空值
mybatis 一对一关联 association 返回空值
最近学习spring mvc + mybatis开发,看的书是《Spring MVC+Mybatis开发 从入门到精通》,在学习一对一关联,并且延迟加载一节的时候,使用书上讲解的例子无法调通,主要代码问题是在mapper.xml文件中,部分如下:
<resultMap id="BaseResultMap" type="com.pp.entity.SysUser">
<id column="F_Id" jdbcType="VARCHAR" property="fId" />
<result column="F_Account" jdbcType="VARCHAR"
property="fAccount" />
<result column="F_RealName" jdbcType="VARCHAR"
property="fRealname" />
<result column="F_NickName" jdbcType="VARCHAR"
property="fNickname" />
<result column="F_HeadIcon" jdbcType="VARCHAR"
property="fHeadicon" />
<result column="F_Gender" jdbcType="TINYINT" property="fGender" />
<result column="F_Birthday" jdbcType="TIMESTAMP"
property="fBirthday" />
<result column="F_MobilePhone" jdbcType="VARCHAR"
property="fMobilephone" />
<result column="F_Email" jdbcType="VARCHAR" property="fEmail" />
<result column="F_WeChat" jdbcType="VARCHAR" property="fWechat" />
<result column="F_ManagerId" jdbcType="VARCHAR"
property="fManagerid" />
<result column="F_SecurityLevel" jdbcType="INTEGER"
property="fSecuritylevel" />
<result column="F_Signature" jdbcType="VARCHAR"
property="fSignature" />
<result column="F_OrganizeId" jdbcType="VARCHAR"
property="fOrganizeid" />
<result column="F_DepartmentId" jdbcType="VARCHAR"
property="fDepartmentid" />
<result column="F_RoleId" jdbcType="VARCHAR" property="fRoleid" />
<result column="F_DutyId" jdbcType="VARCHAR" property="fDutyid" />
<result column="F_IsAdministrator" jdbcType="TINYINT"
property="fIsadministrator" />
<result column="F_SortCode" jdbcType="INTEGER"
property="fSortcode" />
<result column="F_DeleteMark" jdbcType="TINYINT"
property="fDeletemark" />
<result column="F_EnabledMark" jdbcType="TINYINT"
property="fEnabledmark" />
<result column="F_Description" jdbcType="VARCHAR"
property="fDescription" />
<result column="F_CreatorTime" jdbcType="TIMESTAMP"
property="fCreatortime" />
<result column="F_CreatorUserId" jdbcType="VARCHAR"
property="fCreatoruserid" />
<result column="F_LastModifyTime" jdbcType="TIMESTAMP"
property="fLastmodifytime" />
<result column="F_LastModifyUserId" jdbcType="VARCHAR"
property="fLastmodifyuserid" />
<result column="F_DeleteTime" jdbcType="TIMESTAMP"
property="fDeletetime" />
<result column="F_DeleteUserId" jdbcType="VARCHAR"
property="fDeleteuserid" />
<result column="F_CardNo" jdbcType="VARCHAR" property="fCardno" />
<association property="userLogon"
javaType="com.pp.entity.SysUserLogon" select="findSysUserLogonById"
column="F_Id">
</association>
</resultMap>
<!-- 加载sysuserlogon -->
<select id="findSysUserLogonById"
resultType="com.pp.entity.SysUserLogon"
parameterType="java.lang.String">
select
*
from sys_userlogon
where F_UserId = #{value}
</select>
sys_user 表和 sys_userlogon 表的关系是
sys_user.f_id = sys_userlogon.f_userid
一对一关联使用的是association配置,property指向sys_user实体类的userLogon属性,如下:
<association property="userLogon"
javaType="com.pp.entity.SysUserLogon" select="findSysUserLogonById"
column="F_Id">
</association>
关联的sql语句id是 findSysUserLogonById ,具体结构如下:
<select id="findSysUserLogonById"
resultType="com.pp.entity.SysUserLogon"
parameterType="java.lang.String">
select
*
from sys_userlogon
where F_UserId = #{value}
</select>
调试过程中在控制台中确实看到了延迟加载执行的sql是正常的,但是SysUser实体中的 userLogon却始终为null
怀疑是两个类某些字段的属性存在相同命名的问题,但是觉得不应该如此low,但还是试着在association节中单独加上result节声明,如下:
<association property="userLogon"
javaType="com.pp.entity.SysUserLogon" select="findSysUserLogonById"
column="F_Id">
<id column="F_Id" property="fId" jdbcType="VARCHAR" />
<result column="F_UserId" property="fUserid"
jdbcType="VARCHAR" />
<result column="F_UserPassword" property="fUserpassword"
jdbcType="VARCHAR" />
<result column="F_UserSecretkey" property="fUsersecretkey"
jdbcType="VARCHAR" /> </association>
结果依然不行,后来参考网上相同问题的答案,单独增加一个resultMap,修改 findSysUserLogonById的select配置节,将resultType=“com.pp.entity.SysUserLogon”去掉,换成resultMap=“(新定义的SysUserLogon的resultMap名)”,代码如下:
<resultMap id="userLogonMap"
type="com.pp.entity.SysUserLogon"> <id column="F_Id" property="fId" jdbcType="VARCHAR" />
<result column="F_UserId" property="fUserid" jdbcType="VARCHAR" />
<result column="F_UserPassword" property="fUserpassword"
jdbcType="VARCHAR" />
<result column="F_UserSecretkey" property="fUsersecretkey"
jdbcType="VARCHAR" />
<result column="F_AllowStartTime" property="fAllowstarttime"
jdbcType="TIMESTAMP" />
<result column="F_AllowEndTime" property="fAllowendtime"
jdbcType="TIMESTAMP" />
<result column="F_LockStartDate" property="fLockstartdate"
jdbcType="TIMESTAMP" />
<result column="F_LockEndDate" property="fLockenddate"
jdbcType="TIMESTAMP" />
<result column="F_FirstVisitTime" property="fFirstvisittime"
jdbcType="TIMESTAMP" />
<result column="F_PreviousVisitTime"
property="fPreviousvisittime" jdbcType="TIMESTAMP" />
<result column="F_LastVisitTime" property="fLastvisittime"
jdbcType="TIMESTAMP" />
<result column="F_ChangePasswordDate"
property="fChangepassworddate" jdbcType="TIMESTAMP" />
<result column="F_MultiUserLogin" property="fMultiuserlogin"
jdbcType="TINYINT" />
<result column="F_LogOnCount" property="fLogoncount"
jdbcType="INTEGER" />
<result column="F_UserOnLine" property="fUseronline"
jdbcType="TINYINT" />
<result column="F_Question" property="fQuestion"
jdbcType="VARCHAR" />
<result column="F_AnswerQuestion" property="fAnswerquestion"
jdbcType="VARCHAR" />
<result column="F_CheckIPAddress" property="fCheckipaddress"
jdbcType="TINYINT" />
<result column="F_Language" property="fLanguage"
jdbcType="VARCHAR" />
<result column="F_Theme" property="fTheme" jdbcType="VARCHAR" /> </resultMap>
<!-- 加载sysuserlogon -->
<select id="findSysUserLogonById" resultMap="userLogonMap"
parameterType="java.lang.String">
select
*
from sys_userlogon
where F_UserId = #{value}
</select>
这样调整之后,association关联的对象不再为null
mybatis 一对一关联 association 返回空值的更多相关文章
- Java基础-SSM之mybatis一对一关联
Java基础-SSM之mybatis一对一关联 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建husbands和wifes表并建 ...
- mybatis 一对一关联映射实例
在实际项目开发中,经常存在一对一的关系,如一个人对应一张身份证信息,这就是一对一的关系.下面是一个简单的实例: 1.建表过程我就省略了,主要是一张Person表,一张IDCard表,其相关属性见步骤2 ...
- MyBatis学习(四)MyBatis一对一关联查询
一对一关联查询即.两张表通过外键进行关联.从而达到查询外键直接获得两张表的信息.本文基于业务拓展类的方式实现. 项目骨架 配置文件conf.xml和db.properties前几节讲过.这里就不细说了 ...
- mybatis一对一关联查询——(八)
1.需求 查询所有订单信息,关联查询下单用户信息. 注意: 因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询.如果从用户信息出发查询用户下的订单信息则为一对多查 ...
- Mybatis一对一关联查询
有两张表,老师表teacher和班级表class,一个class班级对应一个teacher,一个teacher对应一个class 需求是根据班级id查询班级信息(带老师的信息) 创建teacher和c ...
- mybatis 一对一关联
首先建表: CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE ...
- MyBatis 一对一关联查询
xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC & ...
- mybatis一对一关联表查询
先创建一个表 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name ) ); CREATE TABLE class( c_ ...
- 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)
关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...
随机推荐
- windows10的普通用户使用Task Scheduler的问题
在Create Task 窗口的General选项卡中,在Security options 里有几个单选项,分别是 Run only when user is logged on ,Run wheth ...
- 虚拟机设置固定ip可以使shell远程连接到服务器
配置vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR = 你的本机ip 192.168.1. 的范围内 NETMASK = 255.255.2 ...
- IT题库5-并发和并行
并发和并行从宏观上来讲都是同时处理多路请求的概念.但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔内发生.
- jquery.uploadify上传插件HTML5版中文api使用说明
插件官网文档:http://www.uploadify.com/documentation/ H5版下载地址:https://download.csdn.net/download/u010075697 ...
- [dart学习]第一篇:windows下安装配置dart编译环境,写出helloworld
前言 博主非科班出身,平时多用C语言,最近想了解学习一门第二语言,看上了可用于移动开发的目前还小众一点dart,准备用一段比较长的时间来慢慢学习.理解. 关于dart语言不再详细介绍了,大家可以访问 ...
- 代码修改WinForm datagridview 样式 及数据绑定
#region 表格设置 /// <summary> /// 调整表格 /// </summary> /// <param name="dataGrid&quo ...
- for 循环,如果判断那里用到了一个函数,每次循环一次都会调用一次函数,如图
但用高级for,可以不用每次都调用方法
- 关于用IIS在.net平台发布网页的一些坑
说明:由于需要显示页面的表格的内容,要用pageOffice插件,而装pageoffice之前需要装.net3.5,直接导入. 为什么要分别装.net4.5和.net3.5 ? 都要装? 问题:刚才 ...
- Tomcat笔记 #01# WEB应用管理工具简介
索引 查看JVM以及SERVLET/接口的情况 动态管理WEB应用 Tomcat自带了一个基于网页的web应用管理工具,可以帮助我们监控&管理部署上去的WEB APP,特别方便!恰好之前碰到的 ...
- android 模拟器 访问 localhost IIs Express 400错误
如果用安卓模拟器调试本机的网站,比如 localhost:63586,是访问不到的,返回结果是 400 错误.原因是模拟器上的localhost指向的默认是模拟器自己. 解决方法是:(1) 把安卓模拟 ...