IAccountDao
package cn.edu.hznu.dao; import cn.edu.hznu.doamin.Account; import org.apache.ibatis.annotations.*; import org.apache.ibatis.mapping.FetchType; import java.util.List; /** * Created by wjj on 2020/4/1 */ @CacheNamespace(blocking = true) public interface IAccountDao { /* * 查询所有的账户信息并显示所属用户的信息 * */ @Select("select * from account")//sql语句 @Results(id="AccountMap",//配置id属性,以后别的方法也可以引用 value={//xml文件中的result @Result(id=true,column = "id" ,property = "id"),//id属性,是否主键 使用column和property将数据库中的列名和实体类中的属性名进行映射 @Result(column = "uid" ,property = "uid"), @Result(column = "money" ,property = "money"), @Result(property = "user",column = "uid",//column 使用哪个属性进行查询 one = @One( select="cn.edu.hznu.dao.IUserDao.findUserById",//查询方法 fetchType = FetchType.EAGER//开启懒加载(使用时才查询) )) }) List<Account>findAll(); @Select("select * from account where uid=#{uid}") @ResultMap("AccountMap")//采用上面设置的映射配置 List<Account> findAccountByUid(Integer uid); }
IUserDao
package cn.edu.hznu.dao; import cn.edu.hznu.doamin.User; import org.apache.ibatis.annotations.*; import org.apache.ibatis.mapping.FetchType; import java.util.List; /** * Created by wjj on 2020/4/1 */ @CacheNamespace(blocking = true)//开启二级缓存,主配置文件中默认开启二级缓存 public interface IUserDao { /* * 查找所有用户,并显示所属账户 * */ @Select("select * from user") @Results(id="UserMap",value={ @Result(id=true,property = "id",column = "id"), @Result(property = "username",column = "username"), @Result(property = "sex",column = "sex"), @Result(property = "address",column = "address"), @Result(property = "birthday",column = "birthday"), @Result(property = "accounts",column = "id",many = @Many( select = "cn.edu.hznu.dao.IAccountDao.findAccountByUid", fetchType = FetchType.LAZY )) }) List<User>findAll(); /* * 查找用户 * */ @Select("select * from user where id=#{id}") User findUserById(Integer id); }