直接上代码
一对一查询:
<mapper namespace="com.inspur.idcrm.mapper.UserMapper"> <resultMap type="User" id="userMap"> <id property="id" column="id"/> <result property="userID" column="USER_ID"/> <result property="userName" column="USER_NAME"/> <result property="userSex" column="USER_SEX"/> <result property="userTel" column="USER_TEL"/> <result property="userEmail" column="USER_EMAIL"/> <association property="customer" column="USER_CUSTOMERID" javaType="Customer"> <id property="id" column="id" /> <result property="customerCode" column="CUSTOMER_CODE"/> <result property="customerName" column="CUSTOMER_NAME"/> <result property="customeraddress" column="CUSTOMER_ADDRESS"/> <result property="customerContancts" column="CUSTOMER_CONTANCTS"/> <result property="customerTel" column="CUSTOMER_TEL"/> <result property="customerEmail" column="CUSTOMER_EMAIL"/> <result property="customerMemo" column="CUSTOMER_MEMO"/> <result property="customerTypeID" column="CUSTOMER_TYPEID"/> <result property="manageName" column="MANAGE_NAME"/> <result property="manager" column="MANAGER"/> <result property="managerTel" column="MANAGER_TEL"/> <result property="customerTeName" column="CUSTOMER_TE_NAME"/> <result property="customerTeTel" column="CUSTOMER_TE_TEL"/> </association> <collection property="roleList" javaType="ArrayList" column="id" ofType="Role" select="selectUserRoles" > <id property="id" column="id"/> <result property="roleName" column="role_name" javaType="string" jdbcType="VARCHAR"/> <result property="roleDesc" column="role_desc" javaType="string" jdbcType="VARCHAR"/> </collection> </resultMap>
customer对象与User是一对一关系,通过配置association 进行关联,查询用户信息,同时把用户所属单位也查询出来。
一对多关系
配置collection进行关联,查询用户信息把每个用户的所有角色信息也查询出来
<select id="getUserList2" parameterType="User" resultType="java.util.List" resultMap="userMap"> select * from t_user as u, t_customer as c where 1=1 and u.USER_CUSTOMERID = c.id <if test="id!=null and id!=''"> and id=#{id} </if> <if test="userID!=null and userID!=''"> and USER_ID=#{userID} </if> <if test="userName!=null and userName!=''"> and USER_NAME LIKE CONCAT(CONCAT('%', #{userName}),'%') </if> <if test="userSex!=null and userSex!=''"> and USER_SEX =#{userSex} </if> <if test="userTel!=null and userTel!=''"> and USER_TEL LIKE CONCAT(CONCAT('%', #{userTel}),'%') </if> <if test="userEmail!=null and userEmail!=''"> and USER_EMAIL LIKE CONCAT(CONCAT('%', #{userEmail}),'%') </if> <if test="customer!=null and customer!=''"> and USER_CUSTOMERID=#{customer.id} </if> </select> <select id="selectUserRoles" resultType="Role" parameterType="int"> select r.id,r.role_name as roleName,r.role_desc as roleDesc from t_role r left join t_user_role u on r.id=u.ROLE_ID where u.USER_ID=#{id} </select>
<select id="selectUserRoles" resultType="Role" parameterType="int">
select r.id,r.role_name as roleName,r.role_desc as roleDesc from t_role r left join t_user_role u on r.id=u.ROLE_ID where u.USER_ID=#{id}
</select>
这个地方遇到一个问题,由于返回时resultType是javabean,如果sql语句中不加别名,无法与javabean的属性进行一一对应,如果不添加别名,需要配置一个role的resultMap。初学者出现情况
相关推荐
这有助于提升我们的编程技巧,解决实际开发中遇到的问题,例如优化SQL性能、处理复杂的数据映射等。同时,熟悉Spring MyBatis的集成方式,能够提高我们的项目开发效率,降低维护成本。 总的来说,这个压缩包的学习...
这份"mybatis学习资料整理"虽然不全面,但包含了MyBatis的一些核心概念和实践应用,还可能包含了他人博客的链接,可以作为学习MyBatis的初步指南。 1. **MyBatis简介**:MyBatis 是一个基于Java的持久层框架,它...
最后,压缩包中的“mybatis学习资料”可能包含更多的练习题、案例分析、实战教程等,这些都能帮助你巩固所学知识,并提升解决实际问题的能力。通过反复的练习和实践,你将能够熟练掌握Mybatis框架,提高你的Java开发...
配套的学习笔记通常会包含作者在学习过程中遇到的问题及解决方案,实战案例解析,有助于快速掌握MyBatis Plus的使用技巧和最佳实践。 总之,MyBatis Plus是提升开发效率的利器,这套学习资料能够帮助开发者系统性地...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC...如果你在学习过程中遇到任何问题,博主提供的交流渠道是一个很好的求助平台,可以与其他学习者共同进步。
这篇博文"我们一起读文档,学习MyBatis(一)——一个简单demo的实现"旨在引导初学者理解并实践MyBatis的基本用法。 在开始之前,你需要了解MyBatis的核心概念: 1. **配置文件**:MyBatis的配置文件包含了数据源...
MyBatis是一个流行的Java持久层框架,它允许开发者将SQL语句与Java代码无缝结合,提供了灵活的映射机制和动态SQL支持。本资源“mybatis源码分析视频...如果在学习过程中遇到问题,可以及时联系提供资源的作者寻求帮助。
2. **提升问题解决能力**:当遇到框架使用上的问题时,能够快速定位到具体的问题所在,并给出合理的解决方案。 3. **增强自定义能力**:熟悉源码后可以根据自己的需求对框架进行一定程度上的定制和扩展。 ### 三、...
8. 强大的社区支持:Mybatis 有着广泛的用户基础和活跃的社区,遇到问题可以得到及时的解答和帮助。 在使用Mybatis时,我们需要配置Mybatis的核心配置文件(mybatis-config.xml),其中包含数据源、事务管理器、...
通过深入研究Mybatis 3.2.2的源码,开发者可以了解到其内部的工作原理,提升自己的编程技能,也能更好地理解和解决在实际开发中遇到的问题。源码阅读可以让你看到Mybatis是如何优雅地处理ORM,如何实现SQL的动态生成...
这个“Mybatis学习案例”提供了一系列的示例项目,旨在帮助初学者和开发者深入理解和掌握Mybatis的核心特性和实践应用。 首先,让我们逐一解析每个案例可能涉及的知识点: 1. **配置文件与SqlSessionFactory**:在...
`fluent-mybatis` 作为一个活跃的开源项目,有着丰富的文档和社区支持,遇到问题时可以快速获取帮助和解决方案。 在 `fluent-mybatis-master` 压缩包中,包含了项目的源码、示例、文档以及构建脚本等资源,开发者...
Mybatis 是一款流行的Java持久层...在构建过程中,可能会遇到各种挑战,但每解决一个问题,都会使你对Mybatis的理解更加深入。所以,不要害怕复杂,动手去“手撕”源码,亲自动手实现一个框架,这是学习的最好方式。
在Java开发领域,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射工作。本资源“mybatis源码学习代码...同时,了解MyBatis的内部机制也有助于在遇到问题时,能够更准确地定位并解决问题。
3. **文档和社区支持**:相较于MyBatis本身,Mybatis-Plus的文档和社区资源相对较少,遇到问题时可能会遇到一定的挑战。 4. **版本兼容性**:随着MyBatis版本的迭代更新,Mybatis-Plus可能需要不断调整以保持兼容性...
Struts2、Spring和Mybatis的文档提供了丰富的信息,可以帮助你解决开发中遇到的问题。通过阅读《Struts2.docx》、《Spring.docx》和《Mybatis.docx》这些文档,你可以得到更详细的指导和示例,进一步提升你的技能。
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取...同时,理解源码有助于我们在遇到问题时能够快速定位并解决,提升开发效率。
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及...如果你在按照相关博文构建项目时遇到问题,这份资源将作为参考,帮助你解决问题。
开发者可以通过阅读这些文档快速上手MyBatis,并且在遇到问题时能够查找解决方案。例如,文档会介绍如何创建SqlSessionFactory,如何编写Mapper接口和XML映射文件,以及如何执行CRUD操作等。 在压缩包中,"mybatis-...