【mybatis中返回对象中包含其他对象数据】

mybatis中返回对象中包含其他对象数据

实体类


public class JudgmentCaseDetailVo {

 /**
     * 主键ID
     */
    private Long id;

    /**
     * 文书ID
     */
    private String cpwsId;

    /**
     * 编号
     */
    private String caseNo;

   /**
     * 上次审结时间
     */
    private String laTime;

    /**
     * 审结时间
     */
    private String sortTime;

    /**
     * 类型
     */
    private String caseType;

   /**
     * 相关人员集合
     */
    private List<CasePartyDetail> casePartys;
}

xml写法


<!--方法参数及返回值-- >
  <resultMap id="detailMap" type="com.xquant.xcrms.modules.judicialinformation.entity.vo.JudgmentCaseDetailVo">
  		<id property="id" column="id"/>
        <result property="cpwsId" column="CPWS_ID"/>
        <result property="caseNo" column="CASE_NO"/>
        <result property="laTime" column="LA_TIME"/>
        <result property="sortTime" column="SORT_TIME"/>
        <result property="caseType" column="CASE_TYPE"/>
   		<collection property="casePartys" ofType="com.xquant.xcrms.modules.judicialinformation.entity.po.CasePartyDetail">
   		 	<id property="id" column="detail_id"/>
            <result property="cpwsId" column="detail_cpws_id"/>
            <result property="title" column="TITLE"/>
            <result property="partyType" column="PARTY_TYPE"/>
    	</collection>
    </resultMap>


<!--查询方法-- >
<select id="selectDetailById" resultMap="detailMap">
        select jc.* ,cpd.* from JUDGMENT_CASENO_INFO jc left join CASE_PARTY_DETAIL cpd on jc.CPWS_ID = cpd.CPWS_ID
        <where>
            1 = 1
            <if test="id != null and id != ''">
                and jc.ID = #{id}
            </if>
        </where>
    </select>

值得注意的点在表字段名是相同的时候,column 对应的要改为不同的别名,查询方法的resultMap中要与返回的map绑定的ID名一致

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lamp-cloud的前身是zuihou-admin-cloud,从3.0.0版本开始,改名为lamp-cloud,它是lamp项目的其一员。   lamp-cloud是一个基于SpringCloud(Hoxton.SR10) + SpringBoot(2.3.10.RELEASE)的SaaS微服务脚手架,具有统一授权、认证后台管理系统,其包含具备用户管理、资源权限管理、网关API、分布式事务、大文件断点分片续传等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目使用。核心技术采用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Redis、RibbitMQ等主要框架和间件。 lamp-cloud功能: 1、服务注册&发现与调用: 基于Nacos来实现的服务注册与发现,使用使用Feign来实现服务互调, 可以做到使用HTTP请求远程调用时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。 2、服务鉴权: 通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的安全性。 3、负载均衡: 将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和ribbon,可以帮我们进行正常的网关管控和负载均衡。其扩展和借鉴国外项目的扩展基于JWT的Zuul限流插件,方面进行限流。 4、熔断机制: 因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Hystrix的作为熔断器,避免了服务之间的“雪崩”。 5、监控: 利用Spring Boot Admin 来监控各个独立Service的运行状态;利用turbine来实时查看接口的运行状态和调用频率;通过Zipkin来查看各个服务之间的调用链等。 6、链路调用监控: 利用Zipkin实现微服务的全链路性能监控, 从整体维度到局部维度展示各项指标,将跨应用的所有调用链性能信息集展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障排除时间。有了它,我们能做到: 请求链路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息。 可视化:各个阶段耗时,进行性能分析。 依赖优化:各个调用环节的可用性、梳理服务依赖关系以及优化。 数据分析,优化链路:可以得到用户的行为路径,汇总分析应用在很多业务场景。 7、数据权限 利用基于Mybatis的DataScopeInterceptor拦截器实现了简单的数据权限 8、SaaS(多租户)的无感解决方案 使用Mybatis拦截器实现对所有SQL的拦截,修改默认的Schema,从而实现多租户数据隔离的目的。 并且支持可插拔。 9、二级缓存 采用J2Cache操作缓存,第一级缓存使用内存(Caffeine),第二级缓存使用 Redis。 由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。 该缓存框架主要用于集群环境。单机也可使用,用于避免应用重启导致的缓存冷启动后对后端业务的冲击。 10、优雅的Bean转换 采用Dozer组件来对 DTO、DO、PO等对象的优化转换 11、前后端统一表单验证 严谨的表单验证通常需要 前端+后端同时验证, 但传统的项目,均只能前后端各做一次检验, 后期规则变更,又得前后端同时修改。 故在hibernate-validator的基础上封装了zuihou-validator-starter起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则, 以后若规则改变,只需要后端修改即可。 12、防跨站脚本攻击(XSS) 通过过滤器对所有请求的 表单参数 进行过滤 通过Json反序列化器实现对所有 application/json 类型的参数 进行过滤 13、当前登录用户信息注入器 通过注解实现用户身份注入 14、在线API 由于原生swagger-ui某些功能支持不够友好,故采用了国内开源的swagger-bootstrap-ui,并制作了stater,方便springboot用户使用。 15、代码生成器 基于Mybatis-plus-generator自定义了一套代码生成器, 通过配置数据库字段的注释,自动生成枚举类、数据字典注解、SaveDTO、UpdateDTO、表单验证规则注解、Swagger注解等。 16、定时任务调度器: 基于xxl-jobs进行了功能增强。(如:指定时间发送任务、执行器和调度器合并项目、多数据源) 17、大文件/断点/分片续传 前端采用w
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session 完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将 mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到 web工程的lib目录. 3. 创建mysql 测试数据库和用户表,注意,这里采用的是 utf-8 编码 创建用户表,并插入一条测试数据 程序代码 程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'
好的,你的问题是如何在 MyBatis 返回一个对象,该对象包含一个 List 集合,请确认我的理解是否正确。如果是这样的话,你可以在 MyBatis 的映射文件使用一个 resultMap 来实现这个需求。下面是一个示例: 假设你有两个类,一个是 Order 类,另一个是 OrderItem 类。Order 类包含了一个 List<OrderItem> 属性,你希望在使用 MyBatis 查询数据时,可以返回一个 Order 对象,该对象包含了一组 OrderItem 对象。 首先,你需要在映射文件定义一个 resultMap,如下所示: ```xml <resultMap id="orderResultMap" type="Order"> <id column="id" property="id"/> <result column="order_no" property="orderNo"/> <result column="total_price" property="totalPrice"/> <collection property="orderItems" ofType="OrderItem"> <id column="item_id" property="itemId"/> <result column="item_name" property="itemName"/> <result column="item_price" property="itemPrice"/> </collection> </resultMap> ``` 在这个 resultMap ,我们定义了一个 collection,它的 property 属性指定了 Order 类的 List<OrderItem> 属性的名称,ofType 属性指定了集合元素的类型。接下来,我们可以在查询语句使用这个 resultMap,如下所示: ```xml <select id="getOrder" resultMap="orderResultMap"> SELECT id, order_no, total_price, item_id, item_name, item_price FROM orders JOIN order_items ON orders.id = order_items.order_id WHERE orders.id = #{orderId} </select> ``` 在这个查询语句,我们使用了上面定义的 orderResultMap,查询结果会被映射成一个 Order 对象,其的 orderItems 属性就是一个 List<OrderItem> 集合。注意,我们需要在查询语句使用 JOIN 操作,将 orders 和 order_items 两张表进行连接,以便获取所有的数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值