注解中的@Results 作用同resultMap 解决数据库字段和javabean名称不对应的映射问题
/**
*定义resultMap返回结果类型映射
*查询全部用户
*/
@Select("select * from user")
//id为唯一标识,
@Results(id="userMap",value={
//id默认为false,主键设置为true,column为数据库字段名,property为javabean属性名
@Result(id = true,column = "id",property = "userId"),
@Result(column = "username",property = "userName"),
@Result(column = "address",property = "userAddress"),
@Result(column = "sex",property = "userSex"),
@Result(column = "birthday",property = "useBirthday"),
})
void findAll();
/**
*复用resultMap
*根据id查单个用户
*/
@Select("select * from user where id = #{id}")
//@ResultMap复用上面定义的映射
@ResultMap(value={"userMap"})
User findById(Integer userId);
一对一
//账户实体类
public class Account {
private Integer id;
private Integer uid;
private Double money;
//一对一关系映射:一个账户属于一个用户
private User user;
set/get方法 }
//用户实体类
public class User {
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
set/get方法 }
/**
*查询所有账户,并且获取每个账户所属的用户信息
*/
@Select("select * from account")
@Results(id="accountMap",value={
@Result(id=true,column = "id",property = "id"),
@Result(column = "uid",property = "uid"),
@Result(column = "money",property = "money"),
//一对一写法:property:属性名称 column:查询参数 select:调用方法查询(包名.接口名.方法名)
// fetchType:查询类型,FetchType.EAGER是立即加载FetchType.LAZY是按需加载(懒加载)
@Result(property = "user",column = "uid",
one = @One(select = "com.mybatis.dao.UserDao.findById",
fetchType = FetchType.EAGER))
})
List<Account> findAll();
一对多
//账户实体类
public class Account {
private Integer id;
private Integer uid;
private Double money;
//一对一关系映射:一个账户属于一个用户
private User user;
set/get方法 }
//用户实体类
public class User {
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
//一对多关系映射:一个用户有多个账户
private List<Account> accounts;
set/get方法 }
/**
* 查询所有用户,并且获取用户下的所有账户
*/
@Select("select * from user")
@Results(id="userMap",value={
@Result(id = true,column = "id", property = "id"),
@Result(column = "username",property = "userName"),
@Result(column = "address",property = "userAddress"),
@Result(column = "sex",property = "userSex"),
@Result(column = "birthday",property = "useBirthday"),
//一对多写法:property:属性名称 column:查询参数 select:调用方法查询(包名.接口名.方法名)
// fetchType:查询类型,FetchType.EAGER是立即加载FetchType.LAZY是按需加载(懒加载)
@Result(property = "accounts",column = "id",
many = @Many(select = "com.mybatis.dao.AccountDao.findByUserId",
fetchType = FetchType.LAZY))
})
List<User> findUserAll();
转自:https://blog.csdn.net/weixin_38503726/article/details/86506006l