我们在mybatis 做关联的时候,需要放回两张表里面的字段,一般在sql中 对列名称取别名。那么有没有一种不用取别名的方式去做呢??
第一种使用mybatis的association标签代码如下
mapper.xml
<resultMap id="BaseResultRefMountMap" type="com.jollycorp.settle.dal.dto.TSettleCycleMountRefCycleDto">
<id column="mount_no" jdbcType="BIGINT" property="mountNo" />
<result column="member_id" jdbcType="VARCHAR" property="memberId" />
<result column="member_name" jdbcType="VARCHAR" property="memberName" />
.....
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
<result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
<association javaType="com.jollycorp.settle.dal.model.TSettleCycle" property="settleCycle">
<id column="seq_no" jdbcType="INTEGER" property="seqNo" />
<result column="settle_cycle_no" jdbcType="VARCHAR" property="settleCycleNo" />
<result column="settle_cycle_name" jdbcType="VARCHAR" property="settleCycleName" />
<result column="settlement_mode" jdbcType="VARCHAR" property="settlementMode" />
.....
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
<result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
</association>
</resultMap>
pojo
package com.**.settle.dal.dto;
import java.math.BigDecimal;
import java.util.Date;
import com.**.settle.dal.model.TSettleCycle;
import com.**.settle.dal.model.TSettleCycleMount;
/**
* 类职责:规则挂载表关联规则 结果对象<br/>
*
* <p>Title: TSettleCycleMountRefCycle.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2017 浙江**信息技术有限公司</p>
* <p>Company: 浙江**信息技术有限公司</p>
*
* <p>Author:zcj</p>
* <p>CreateTime:2019年1月21日上午10:27:02
*/
public class TSettleCycleMountRefCycleDto extends TSettleCycleMount{
private static final long serialVersionUID = -6701352773589620485L;
// 结算规则对象
private TSettleCycle settleCycle;
public TSettleCycle getSettleCycle() {
return settleCycle;
}
public void setSettleCycle(TSettleCycle settleCycle) {
this.settleCycle = settleCycle;
}
}
querySQL
<select id="querySettlementOptionalByAccountNo" parameterType="com.jollycorp.settle.dal.model.TSettleCycleMount" resultMap="com.**.settle.dal.dto.TSettleCycleMountRefCycleDto">
select
sc.settlement_optional,
sc.business_day,
scm.settle_date,
scm.next_settle_date,
scm.time_zone,
scm.mount_no,
scm.calendar_code
from t_settle_cycle sc,
t_settle_cycle_mount scm
where scm.CYCLE_SEQ_NO = sc.seq_no
and scm.STATUS = #{status,jdbcType=INTEGER}
and scm.ACCOUNT_NO = #{accountNo,jdbcType=VARCHAR} limit 1
</select>
第二种开启mybaits驼峰的配置实现(mapUnderscoreToCamelCase)
spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/jcpay_settle?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
spring.datasource.druid.filters=stat,log4j,config
mybatis.configuration.mapUnderscoreToCamelCase=true
resultMap----->resultType
pojo
package com.**.settle.dal.dto;
import java.math.BigDecimal;
import java.util.Date;
import com.**.settle.dal.model.TSettleCycle;
import com.**.settle.dal.model.TSettleCycleMount;
/**
* 类职责:规则挂载表关联规则 结果对象<br/>
*
* <p>Title: TSettleCycleMountRefCycle.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2017 浙江**信息技术有限公司</p>
* <p>Company: 浙江**信息技术有限公司</p>
*
* <p>Author:zcj</p>
* <p>CreateTime:2019年1月21日上午10:27:02
*/
public class TSettleCycleMountRefCycleDto implements Serializable{
/**
* 版本号
*/
private static final long serialVersionUID = -6701352773589620485L;
private Integer settlementOptional;
private Integer businessDay;
private Date settleDate;
private Date nextSettleDate;
private String timeZone;
private Long mountNo;
private String calendarCode;
private BigDecimal minimumSettlementAmount;
public Integer getSettlementOptional() {
return settlementOptional;
}
public void setSettlementOptional(Integer settlementOptional) {
this.settlementOptional = settlementOptional;
}
public Integer getBusinessDay() {
return businessDay;
}
public void setBusinessDay(Integer businessDay) {
this.businessDay = businessDay;
}
public Date getSettleDate() {
return settleDate;
}
public void setSettleDate(Date settleDate) {
this.settleDate = settleDate;
}
public Date getNextSettleDate() {
return nextSettleDate;
}
public void setNextSettleDate(Date nextSettleDate) {
this.nextSettleDate = nextSettleDate;
}
public String getTimeZone() {
return timeZone;
}
public void setTimeZone(String timeZone) {
this.timeZone = timeZone;
}
public Long getMountNo() {
return mountNo;
}
public void setMountNo(Long mountNo) {
this.mountNo = mountNo;
}
public String getCalendarCode() {
return calendarCode;
}
public void setCalendarCode(String calendarCode) {
this.calendarCode = calendarCode;
}
public BigDecimal getMinimumSettlementAmount() {
return minimumSettlementAmount;
}
public void setMinimumSettlementAmount(BigDecimal minimumSettlementAmount) {
this.minimumSettlementAmount = minimumSettlementAmount;
}
}