注解中的@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();
mybatis注解开发-输出映射,一对一,一对多
猜你喜欢
转载自blog.csdn.net/weixin_38503726/article/details/86506006
今日推荐
周排行