MyBatis 中使用数据库查询别名进行映射
方法1
XXMapper.xml
<mapper namespace="com.hfepc.dao.andon.AndonExceptionKanbanVOMapper" >
<select id="getfindAll" resultMap="com.hfepc.vo.andon.AndonExceptionKanban1VO">
SELECT
A.excp_id AS 'excpId',
E.line_name AS 'lineName',
D.equ_name AS 'equName',
F.type_name AS 'type',
G.end_time AS 'triggerTime',
H.end_time AS 'attendTime',
(H.end_time - G.end_time)/60 AS 'totalExceptionTime',
J.user_name AS 'userName',
K.node_name AS 'status'
FROM andon_exception A
LEFT JOIN andon_exception_equ B ON A.excp_id = B.excp_id
LEFT JOIN equ_book C ON B.eb_id = C.eb_id
LEFT JOIN equ_info D ON C.equ_id = D.equ_id
LEFT JOIN line_info E ON A.line_id = E.line_id
LEFT JOIN andon_type F ON A.type_id = F.type_id
LEFT JOIN andon_flow_prcs G ON A.excp_id = G.excp_id AND G.node_id = 1
LEFT JOIN andon_flow_prcs H ON A.excp_id = H.excp_id AND H.node_id = 2
LEFT JOIN andon_flow_prcs I ON A.excp_id = I.excp_id AND I.node_id = 3
LEFT JOIN sys_user J ON H.operator_id = J.user_id
LEFT JOIN andon_node K ON A.excp_status = K.node_id
WHERE 1=1
AND I.end_time LIKE date_format(now(),'%Y-%m-%d%')
AND E.ws_id = (
SELECT ws_id
FROM line_info
WHERE line_code = #{lineCode}
)
</select>
</mapper>
XXMapper.java
public List<AndonExceptionKanban1VO> getGG(@Param("lineCode") String lineCode);
AndonExceptionKanban1VO.java
public class AndonExceptionKanban1VO{
private Integer excpId;// 安灯异常ID
private String lineName; // 产线
private String type; // 异常类型
private String equName; // 设备
private Date triggerTime; // 提报时间
private Date attendTime; // 签到时间
private long totalExceptionTime; // 累计时间
private String userName; // 用户名(签到)
private String status; // 状态
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
.
.
.
方法2
XXMapper.xml
<mapper namespace="com.hfepc.dao.andon.AndonExceptionKanbanVOMapper" >
<resultMap type="andon.AndonExceptionKanbanVO" id="baseResultMap">
<id property="excpId" column="excpId"/>
<result property="lineName" column="lineName"/>
<result property="type" column="type"/>
<result property="equName" column="equName"/>
<result property="triggerTime" column="triggerTime"/>
<result property="attendTime" column="attendTime"/>
<result property="totalExceptionTime" column="totalExceptionTime"/>
<result property="userName" column="userName"/>
<result property="status" column="status"/>
</resultMap>
<resultMap type="com.hfepc.vo.andon.AndonExceptionKanban1VO" id="voMap">
<id property="excpId" column="excpId"/>
<result property="lineName" column="lineName"/>
<result property="type" column="type"/>
<result property="equName" column="equName"/>
<result property="triggerTime" column="triggerTime"/>
<result property="attendTime" column="attendTime"/>
<result property="totalExceptionTime" column="totalExceptionTime"/>
<result property="userName" column="userName"/>
<result property="status" column="status"/>
</resultMap>
<select id="getGG" resultMap="voMap">
SELECT
A.excp_id AS 'excpId',
E.line_name AS 'lineName',
D.equ_name AS 'equName',
F.type_name AS 'type',
G.end_time AS 'triggerTime',
H.end_time AS 'attendTime',
(H.end_time - G.end_time)/60 AS 'totalExceptionTime',
J.user_name AS 'userName',
K.node_name AS 'status'
FROM andon_exception A
LEFT JOIN andon_exception_equ B ON A.excp_id = B.excp_id
LEFT JOIN equ_book C ON B.eb_id = C.eb_id
LEFT JOIN equ_info D ON C.equ_id = D.equ_id
LEFT JOIN line_info E ON A.line_id = E.line_id
LEFT JOIN andon_type F ON A.type_id = F.type_id
LEFT JOIN andon_flow_prcs G ON A.excp_id = G.excp_id AND G.node_id = 1
LEFT JOIN andon_flow_prcs H ON A.excp_id = H.excp_id AND H.node_id = 2
LEFT JOIN andon_flow_prcs I ON A.excp_id = I.excp_id AND I.node_id = 3
LEFT JOIN sys_user J ON H.operator_id = J.user_id
LEFT JOIN andon_node K ON A.excp_status = K.node_id
WHERE 1=1
AND I.end_time LIKE date_format(now(),'%Y-%m-%d%')
AND E.ws_id = (
SELECT ws_id
FROM line_info
WHERE line_code = #{lineCode}
)
</select>
</mapper>
XXMapper.java
public List<AndonExceptionKanban1VO> getGG(@Param("lineCode") String lineCode);
小知识点:
、resultMap 中的对应column字段是完成SQL查询语句之后显示的字段名(而非查询前显示的字段名)
、通过SSM框架的SpringMVC映射到前台的字段与对应的domain层无关系,而与传递的map对应的键值KEY有关系,如上中显示的userName字段但是domain中显示的是attendName字段。前台映射是${xx.userName } 而非attendName
、SQL 返回的对象对应键值关系表resultMap="voMap"。根据Map进行返回
MyBatis 中使用数据库查询别名进行映射的更多相关文章
- mybatis中的高级查询
Mybatis作为一个ORM框架,肯定是支持sql高级查询的. 下面的一个案例来为大家详细讲解mybatis中的高级查询. 案例说明: 此案例的业务关系是用户,订单,订单详情与商品之间的关系. 以订单 ...
- mybatis中的延迟查询思想
1.一对一延迟加载 延迟加载: 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据.延迟加载也称懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比 ...
- java使用插件pagehelper在mybatis中实现分页查询
摘要: com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件 PageHelper是国内牛人的一个开源项目,有兴趣的可以去看源码,都有 ...
- Mybatis中的in查询和foreach标签
Mybatis中的foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separato ...
- SSM-MyBatis-13:Mybatis中多条件查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...
- 【mybatis】mybatis中放置IN查询拼接sql过长,IN查询进行分批次查询的处理
需要使用的切割list集合的工具类,链接:https://www.cnblogs.com/sxdcgaq8080/p/9376947.html 处理逻辑,原本的一个LIst,进行切割,循环进行myba ...
- CodeIgniter (CI)框架中的数据库查询汇总
引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...
- 在使用mybatis中指定字段查询
1:需求:查询学过“叶平”老师所教的所有课的同学的学号.姓名: List<Map<String,Object>> selectYepingAllCourse(@Param(&q ...
- Mybatis中使用级联查询,一对多的查询
一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...
随机推荐
- weblogic 服务器部署SSL证书
一.证书介绍 1.需要的证书 生产需要的证数如下: 即客户提供的证数: L1Croot.crt,L1Cchain.crt,entrustcert.crt,server,jks 证书清单: L1Croo ...
- 【2016北京集训测试赛】river
HINT 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. [吐槽] 嗯..看到这题的想法的话..先想到了每个点的度为2,然后就有点不知所措了 隐隐约约想到了网络流,但并没 ...
- Android端 高德地图点击得到经纬度
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...
- java抽象类注意问题
当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义. 抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法. 抽象类存在 ...
- Solidity调试 - 实现变量打印
Solidity没有print或console.log方法可以用来打印变量,这会给我们调试程序增加难度. Solidity有event功能,可以在event中记录变量信息,通过调用event方法也可以 ...
- SpringMVC中的适配器(适配者模式)
此处采用了适配器模式, 由于Controller的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用Controller方法,需要在代码中写成如下形式: if(mappedHandl ...
- 新装的Linux服务系统安装MySQL
目的描述:全新的腾讯云Linux服务器,系统是ubuntu 16.04.需要在上面安装mysql数据库. 使用XShell远程登录,在终端窗口中使用sudo apt-get 指令在线安装mysql. ...
- Java内存区域之程序计数器--《深入理解Java虚拟机》学习笔记及个人理解(一)
Java虚拟机程序计数器 在书上的P39页 程序计数器干嘛的? 有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个. 无论是取下一条指令还是分支.循环.跳转.中断.线程恢复,都需要这个程序计 ...
- python全栈开发-Day2 布尔、流程控制、循环
python全栈开发-Day2 布尔 流程控制 循环 一.布尔 1.概述 #布尔值,一个True一个False #计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人 ...
- 笔记:I/O流-对象序列化
Java 语言支持一种称为对象序列化(Object Serialization)的非常通用的机制,可以将任何对象写入到流中,并在之后将其读回,首先需要支持对象序列化的类,必须继承与 Serializa ...