Mybatis中select返回类型
- 单一数据 ,数值类型,字符类型(字符串) ,布尔类型等等
- 返回一个对象(pojo ,vo等)
- 返回一个集合(类型都是List 集合)
1 select可以返回单一 一个值:
// 单一数据用resultType属性 属性值用包装类写全称路径 ,尽量代码规范
<select id="validateChooseMore" resultType="java.lang.Long">
SELECT
max(t.count_sum) as max_count
FROM (
SELECT
count(1) AS count_sum
FROM
xxoperation_class_course_line xccl,
xxoperation_class_header xch,
xxoperation_stu_choose_course xscc
WHERE
xccl.CLASS_HEADER_ID = xch.CLASS_HEADER_ID
AND xscc.CLASS_ID = xch.CLASS_HEADER_ID
AND xscc.STUDENT_ID = #{studentId}
AND xscc.CLASS_ID = #{classId}
GROUP BY
xccl.COURSE_ID
) t
Long validateChooseMore(StuChooseCourse stuChooseCourse);
2 返回一个对象(vo ,pojo):
<select id="findParentOrgUnitByCode" resultType="com.hand.hap.hr.dto.HrOrgUnit">
SELECT
houb.UNIT_ID AS unitId,
houb.PARENT_ID AS parentId,
houb.UNIT_CODE AS unitCode,
houb.NAME AS name,
houb.UNIT_TYPE AS unitType
FROM hr_org_unit_b houb
WHERE houb.UNIT_ID = #{parentId}
</select>
HrOrgUnit findParentOrgUnitByCode(Long parentId);
3 返回一个集合(类型都是List 集合)
resultType 自动匹配对应的值
//resultType 自动映射
<select id="findAppropriateEmployees" resultType="com.hand.hap.hr.dto.Employee">
SELECT
he.EMPLOYEE_ID AS employeeId,
he.EMPLOYEE_CODE AS employeeCode,
he.NAME AS name,
he.BORN_DATE AS bornDate,
he.EMAIL AS email,
he.MOBIL AS mobil,
he.JOIN_DATE AS joinDate,
he.GENDER AS gender,
he.CERTIFICATE_ID AS certificateId,
he.STATUS AS status,
he.ATTRIBUTE3,
he.ATTRIBUTE4
FROM hr_employee he,
hr_employee_assign hea,
hr_org_position_b hop
LEFT JOIN xxmd_per_jobs xpj ON xpj.JOB_ID = hop.ATTRIBUTE1
where hea.EMPLOYEE_ID = he.EMPLOYEE_ID
AND hea.PRIMARY_POSITION_FLAG = 'Y'
AND hea.ENABLED_FLAG = 'Y'
</select>
List<Employee> findAppropriateEmployees(List<ClassCondition> list, Long classHeaderId);
自定义返回类型 resultMap属性值
<select id="findConditionsInfo" resultMap="BaseResultMap">
SELECT
xcc.*,
xpj.JOB_NAME AS position_name,
xmh.COURSE_NAME as pre_course_name,
(SELECT scvb.TAG FROM sys_code_b scb,sys_code_value_b scvb WHERE scb.CODE = 'XXCOURSE_ENTRY_TERM'AND scb.CODE_ID
= scvb.CODE_ID AND scvb.VALUE = xcc.ENTRY_TERM) AS ENTRY_TERM_DESC
FROM
xxoperation_class_condition xcc
LEFT JOIN xxmd_per_jobs xpj ON xcc.POSITION_ID = xpj.JOB_ID
LEFT JOIN xxcourse_management_header xmh on xmh.COURSE_ID = xcc.PRE_COURSE_ID
<trim prefix="WHERE" prefixOverrides="AND | OR">
<if test="classHeaderId!=null">
xcc.CLASS_HEADER_ID = #{classHeaderId}
</if>
</trim>
</select>
<resultMap id="BaseResultMap" type="gtmc.hr.xxoperation.dto.ClassCondition">
<result column="CLASS_CONDITION_ID" property="classConditionId" jdbcType="DECIMAL"/>
<result column="CLASS_HEADER_ID" property="classHeaderId" jdbcType="DECIMAL"/>
<result column="SOURCE_ID" property="sourceId" jdbcType="VARCHAR"/>
<result column="STUDENTS_GROUP" property="studentsGroup" jdbcType="VARCHAR"/>
<result column="QUALIFICATION_LEVEL_CODE" property="qualificationLevelCode" jdbcType="VARCHAR"/>
<result column="POSITION_CATEGORY_CODE" property="positionCategoryCode" jdbcType="VARCHAR"/>
<result column="POSITION_ID" property="positionId" jdbcType="DECIMAL"/>
<result column="PROMOTION_TIME" property="promotionTime" jdbcType="DATE"/>
<result column="PRE_COURSE_ID" property="preCourseId" jdbcType="DECIMAL"/>
<result column="ENTRY_TERM" property="entryTerm" jdbcType="VARCHAR"/>
<result column="COURSE_TYPE" property="courseType" jdbcType="VARCHAR"/>
<result column="ENTRY_TERM_DESC" property="entryTermDesc" jdbcType="VARCHAR"/>
<result column="PROGRAM_APPLICATION_ID" property="programApplicationId" jdbcType="DECIMAL"/>
<result column="PROGRAM_UPDATE_DATE" property="programUpdateDate" jdbcType="DATE"/>
<result column="POSITION_NAME" property="positionName" jdbcType="VARCHAR"/>
<result column="PRE_COURSE_NAME" property="preCourseName" jdbcType="VARCHAR"/>
<result column="ENTRY_METHOD" property="entryMethod" jdbcType="VARCHAR" />
</resultMap>
List<ClassCondition> findConditionsInfo(ClassCondition dto);
至于 insert ,delete update 返回的都是数值类型 ()
insert 插入成功后 返回成功的数目 ,否则为-1
delete 删除成功后 返回成功的数目 ,否则为-1
update 删更改成功后 返回成功的数目 ,否则为-1
<delete id="deleteByClassHeaderId">
DELETE
FROM xxoperation_class_condition
WHERE CLASS_HEADER_ID = #{classHeaderId}
</delete>
Integer deleteByClassHeaderId(Long classHeaderId);
<update id="updateByClassHeaderId">
update
SET CLASS_HEADER_NAME=#{classHeaderName}
FROM xxoperation_class_condition
WHERE CLASS_HEADER_ID = #{classHeaderId}
</update >
Integer updateByClassHeaderId(Long classHeaderId);
```java
<insert id="saveClassHeaderId">
insert into xxoperation_class_condition(CLASS_HEADER_ID,CLASS_HEADER_NAME)
values ( #{classHeaderId}, #{classHeaderName})
</insert>
Integer saveClassHeaderId(Long classHeaderId);