<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="top.meethigher.demo10.dao.AccountDao"><resultMapid="accountUserMap"type="Account"><idproperty="aid"column="aid"></id><resultproperty="uid"column="uid"></result><resultproperty="money"column="money"></result><!-- column指定的内容就是account中的uid,用来作为findById的参数进行查询
select指定查询用户的唯一标识,也就是用户配置文件中select的id--><associationproperty="user"column="uid"javaType="user"select="top.meethigher.demo10.dao.UserDao.findById"></association></resultMap><selectid="findAll"resultMap="accountUserMap"> select * from account;
</select></mapper>
UserDao.xml
xml
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="top.meethigher.demo10.dao.UserDao"><selectid="findById"resultType="User"parameterType="Integer"> select * from user where uid=#{id};
</select></mapper>
同时要在主配置文件中开启懒加载,该属性可以在上面5.1中,找官网链接进去看。
xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!--配置懒加载--><settings><!--开启全局懒加载--><settingname="lazyLoadingEnabled"value="true"/><!--关闭立即加载--><settingname="aggressiveLazyLoading"value="false"/></settings><typeAliases></typeAliases><environmentsdefault="mysql"></environments><mappers></mappers></configuration>
运行结果
collection懒加载
查询用户时,对账户列表进行懒加载,属于一对多。
UserDao.xml
xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="top.meethigher.demo10.dao.UserDao"><resultMapid="userAccountMap"type="User"><idproperty="uid"column="uid"></id><resultproperty="username"column="username"></result><resultproperty="sex"column="sex"></result><resultproperty="birthday"column="birthday"></result><resultproperty="address"column="address"></result><collectionproperty="accounts"column="uid"ofType="Account"select="top.meethigher.demo10.dao.AccountDao.findById"></collection></resultMap><selectid="findAll"resultMap="userAccountMap"> select * from user;
</select></mapper>
AccountDao.xml
xml
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="top.meethigher.demo10.dao.AccountDao"><selectid="findById"parameterType="Integer"resultType="Account"> select * from account where uid=#{uid};
</select></mapper>
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="top.meethigher.demo11.dao.UserDao"><!--开启二级缓存--><cache/><!--在操作中开启二级缓存--><selectid="findById"resultType="User"parameterType="Integer"useCache="true"> select * from user where uid=#{id};
</select></mapper>
publicinterfaceUserDao{/**
* 查询所有用户,同时获取到用户下所有账户的信息
*
* @return
*/@Select("select * from user")List<User>findAll();/**
* 通过id查询
*
* @return
*/@Select("select * from user where uid=${id}")UserfindById(Integerid);/**
* 保存
*
* @param user
*/@Insert("insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})")voidsaveUser(Useruser);/**
* 更新
*
* @param user
*/@Update("update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where uid=#{uid}")voidupdateUser(Useruser);@Delete("delete from user where uid=${id}")voiddeleteUser(Integerid);/**
* 模糊查询
*
* @param name
* @return
*/@Select("select * from user where username like #{name}")List<User>findByName(Stringname);/**
* 查询总条数
*
* @return
*/@Select("select count(*) from user")intfindTotal();}
publicinterfaceUserDao{/**
* 查询所有用户,同时获取到用户下所有账户的信息
*
* @return
*/@Select("select * from user")@Results(id="userMap",value={@Result(id=true,column="uid",property="uid"),@Result(column="username",property="username"),@Result(column="birthday",property="birthday"),@Result(column="sex",property="sex"),@Result(column="address",property="address"),})//设置ResultMap的id和对应关系List<User>findAll();/**
* 通过id查询
*
* @return
*/@Select("select * from user where uid=${id}")@ResultMap("userMap")//省略写法UserfindById(Integerid);/**
* 模糊查询
*
* @param name
* @return
*/@Select("select * from user where username like #{name}")@ResultMap(value={"userMap"})//标准写法,value=是可以省略的,如果数组中只有一个元素,{}也可以省略List<User>findByName(Stringname);}