例子1
@Results(id="groupWithUsers",
value = {
@Result(property = "groupId", column = "group_id", id = true),
@Result(property = "name", column = "name"),
@Result(property = "accountId", column = "account_id"),
@Result(property = "deleteFlag", column = "delete_Flag"),
@Result(property = "parentId", column = "parent_Id"),
@Result(property = "userList", javaType=List.class, many =@Many(select="selectUsersByGroupId"), column = "group_id")})
//查询
@Select({"select * from group where account_id=#{accountId} and delete_flag=0"})
List<Group> selectGroupWithUsers(@Param("accountId") String accountId);
@Select({"select u.* from user u",
"inner join user_group ug on u.user_id = ug.user_id",
"where ug.group_id=#{groupId} and u.delete_flag=0"
})
List<User> selectUsersByGroupId(@Param("groupId") String groupId);
实体
@Data
public class Group {
private String groupId;
private String name;
private String accountId;
private String parentId;
private String type;
private List<User> userList;
}
例子2
package com.cnki.urtp.dao.config;
import com.cnki.urtp.domain.log.UrtpRunTimeLog;
import org.apache.ibatis.annotations.*;
/**
* 平台运行中的异常日志
* 映射 program_log表
* @author
*
*/
@Mapper
public interface UrtpProgramLogDao {
@Results({
@Result(property = "logType", column = "log_type"),
@Result(property = "simpleReason", column = "simple_reason"),
@Result(property = "simpleReason", column = "simple_reason"),
})
@Insert("insert into urtp_program_log (log_type,simple_reason,ext_msg,exception,time) values(#{logType},#{simpleReason},#{extMsg},#{exception},now())")
public void saveException(UrtpRunTimeLog
}
实体
package com.cnki.urtp.domain.log;
import lombok.Data;
import java.io.Serializable;
/**
*
* @author
* @since 2020/06/06
* 平台运行中日志实体类
* 映射 kweb_product数据库中 urtp_program_log表
*
* 日志文件只记录错误日志
* 正常运行日志 通过logback生成
*/
@Data
public class UrtpRunTimeLog implements Serializable {
/**
* 日志类型 search|login|download
*/
private String logType;
/**
* 初步判断报错原因
*/
private String simpleReason;
/**
* 额外信息
*/
private String extMsg;
/**
* 详细栈轨迹信息
*/
private String exception;
/**
* 报错时间
*/
private String time;
}
说明
@Results中只有两个属性,id和value,id作为当前@Results注解的唯一标识很好理解;value值为@Result数组,
@Result中常用的属性是column和property,用于配置数据库中的列名和类中的属性名之间的映射关系。另外one和many用于关联查询。比如上面列子中提到的Group类中包含属性List<User> userList,这时集合类型数据,与Group是一对多的关系,需要用many配置,如果Group中需要对象类型数据User user,那么就需要使用one进行配置。
@Many中常用的属性只有selet,用于指定关联查询的方法
但是存在many属性的@Result注解的使用就有些变化
@ResultMap中只有一个属性value,用于指定要引用的@Results,value值为@Results的id值
友情链接:https://blog.csdn.net/zhoushimiao1990/article/details/99944357
网友评论