@Results 对应XML 中的 resultMap
@Result 对应XML 中的 resultType
@resultMap 只接收@Reults 中ID的参数,来实现@Results的复用

@Reults 有ID和value两个值 ID接收字符串 value接受{} 内包含至少一个@Result

默认值可仅使用value 可省略 @Reults({@Result()})

@Result 可使用对应注解

many=@many()

@many() 有两个属性 select 参数为其他mapper方法的完整路径名 和 加载方式参数

one-@one()

@Select(“SELECT r.roleDetails,r.roleID,r.roleName FROM role r LEFT JOIN account_role ar ON r.roleID=ar.roleID WHERE ar.Uuid=#{uuid}”)
@Results({@Result(property = “roleid”, column = “roleid”), @Result(property = “powerList”, column = “roleID”, many = @Many(select = “com.mapper.PowerMapper.findPower”, fetchType = FetchType.LAZY))})

fetchType = FetchType.LAZY 既使用延迟加载模式,不加该属性默认不使用延迟加载
延迟加载有可能会追加多余的字段hander,在配合缓存使用时,会造成序列化异常,故不建议一起使用

作为传递关联查询的参数需要额外填写对应关系,否则映射对象不能获取值

@Results({@Result(property = “映射一对多对象的属性名”, column = “实体列名”), @Result(property = “映射一对多对象的属性名”, column = “实体列名,同时也是传递到级联查询的参数”, many = @Many(select = “级联查询的完整方法名”, fetchType = 加载方式))})

3.53批量插入使用备注

/**
* 通用Mapper接口,特殊方法,批量插入,支持批量插入的数据库都可以使用,例如mysql,h2等
*
* @param <T> 不能为空
* @author liuzh
*/
public interface InsertListMapper<T> {

/**
* 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含`id`属性并且必须为自增列
*
* @param recordList
* @return
*/
@Options(useGeneratedKeys = true, keyProperty = "id")
@InsertProvider(type = SpecialProvider.class, method = "dynamicSQL")
int insertList(List<T> recordList);

/**
* ======如果主键不是id怎么用?==========
* 假设主键的属性名是uid,那么新建一个Mapper接口如下
* <pre>
public interface InsertUidListMapper<T> {
@Options(useGeneratedKeys = true, keyProperty = "uid")
@InsertProvider(type = SpecialProvider.class, method = "dynamicSQL")
int insertList(List<T> recordList);
}
* 只要修改keyProperty = "uid"就可以
*
* 然后让你自己的Mapper继承InsertUidListMapper<T>即可
*
* </pre>
*/
}

/**
* 通用Mapper接口,特殊方法,批量插入,支持批量插入的数据库都可以使用,例如mysql,h2等
*
* @param <T> 不能为空
* @author liuzh
*/
public interface InsertUseGeneratedKeysMapper<T> {

/**
* 插入数据,限制为实体包含`id`属性并且必须为自增列,实体配置的主键策略无效
*
* @param record
* @return
*/
@Options(useGeneratedKeys = true, keyProperty = "id")
@InsertProvider(type = SpecialProvider.class, method = "dynamicSQL")
int insertUseGeneratedKeys(T record);

/**
* ======如果主键不是id怎么用?==========
* 假设主键的属性名是uid,那么新建一个Mapper接口如下
* <pre>
public interface InsertUidMapper<T> {
@Options(useGeneratedKeys = true, keyProperty = "id")
@InsertProvider(type = SpecialProvider.class, method = "dynamicSQL")
int insertUseGeneratedKeys(T record);
}
* 只要修改keyProperty = "uid"就可以
*
* 然后让你自己的Mapper继承InsertUidListMapper<T>即可
*
* </pre>
*/
}