一對一級聯查詢映射文件PersonMapper.xml代碼:
<?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"> <mapper namespace = "com.dao.PersonDao"> <!--方法1:嵌套查詢,執行兩個SQL語句--> <resultMap type = "com.po.Person" id = "cardAndPerson1"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <association property = "card" column="idcard_id" javaType="com.po.Idcard" select = "com.dao.IdCardDao.selectCodeById"/> </resultMap> <select id="selectPersonById1" parameterType="Integer" resultMap="cardAndPerson1"> select * from person where id=#{id} </select> <!--方法2:嵌套查詢,執行一個SQL語句--> <resultMap type = "com.po.Person" id="cardAndPerson2"> <id property = "id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <association property="card" javaType="com.po.Idcard"> <id property = "id" column="idcard_id"/> <result property = "code" column="code"/> </association> </resultMap> <select id = "selectPersonById2" parameterType="Integer" resultMap="cardAndPerson2"> select p.*,ic.code from person p,idcard ic where p.idcard_id = ic.id and p.id=#{id} </select> <!--使用POJO存儲結果--> <select id = "selectPersonById3" parameterType="Integer" resultType="com.pojo.SelectPersonById"> select p.*,ic.code from person p,idcard ic where p.idcard_id = ic.id and p.id=#{id} </select> </mapper>
IdCardMapper.xml代碼:
<?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"> <mapper namespace="com.dao.IdCardDao"> <select id="selectCodeById" parameterType="Integer" resultType="com.po.Idcard"> select * from idcard where id = #{id} </select> </mapper>
一對多查詢映射文件OrdersMapper.xml代碼:
<?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"> <mapper namespace="com.dao.OrdersDao"> <select id="selectOrdersById" parameterType="Integer" resultType="com.po.Orders"> select * from orders where user_id = #{id} </select> </mapper>
UserMapper.XML代碼:
<?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"> <!--命名空間應該是對應接口的包名+接口名 --> <mapper namespace="com.dao.UserDao"> <!--id應該是接口中的方法,結果類型如沒有配置別名則應該使用全名稱 --> <resultMap type="com.po.MyUser" id="userAndOrders1"> <id property="uid" column="uid"/> <result property="uname" column="uname"/> <result property="usex" column="usex"/>
<!--一對多級聯查詢,ofType表示集合中的元素類型,將uid傳遞給selectOrdersById--> <collection property="ordersList" ofType="com.po.Orders" column="uid" select ="com.dao.OrdersDao.selectOrdersById"/> </resultMap> <select id="selectUserOrdersById1" parameterType="Integer" resultMap="userAndOrders1"> select * from user where uid = #{id} </select> <resultMap type="com.po.MyUser" id="userAndOrders2"> <id property="uid" column="uid"/> <result property="uname" column="uname"/> <result property="usex" column="usex"/> <collection property="ordersList" ofType="com.po.Orders"> <id property="id" column="id"/> <result property="ordersn" column="ordersn"/> </collection> </resultMap> <select id="selectUserOrdersById2" parameterType="Integer" resultMap="userAndOrders2"> select u.*,o.id,o.ordersn from user u,orders o where u.uid = o.user_id and u.uid=#{id} </select> <--!使用POJO存儲結果--> <select id="selectUserOrdersById3" parameterType="Integer" resultType="com.pojo.SelectUserOrdersById"> select u.*,o.id,o.ordersn from user u,orders o where u.uid = o.user_id and u.uid=#{id} </select> </mapper>
多對多查詢,映射文件OrdersMapper.xml文件
<?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"> <!--命名空間應該是對應接口的包名+接口名 --> <mapper namespace="com.dao.UserDao"> <!--id應該是接口中的方法,結果類型如沒有配置別名則應該使用全名稱 --> <resultMap type="com.po.MyUser" id="userAndOrders1"> <id property="uid" column="uid"/> <result property="uname" column="uname"/> <result property="usex" column="usex"/> <collection property="ordersList" ofType="com.po.Orders" column="uid" select ="com.dao.OrdersDao.selectOrdersById"/> </resultMap> <select id="selectUserOrdersById1" parameterType="Integer" resultMap="userAndOrders1"> select * from user where uid = #{id} </select> <resultMap type="com.po.MyUser" id="userAndOrders2"> <id property="uid" column="uid"/> <result property="uname" column="uname"/> <result property="usex" column="usex"/> <collection property="ordersList" ofType="com.po.Orders"> <id property="id" column="id"/> <result property="ordersn" column="ordersn"/> </collection> </resultMap> <select id="selectUserOrdersById2" parameterType="Integer" resultMap="userAndOrders2"> select u.*,o.id,o.ordersn from user u,orders o where u.uid = o.user_id and u.uid=#{id} </select> <select id="selectUserOrdersById3" parameterType="Integer" resultType="com.pojo.SelectUserOrdersById"> select u.*,o.id,o.ordersn from user u,orders o where u.uid = o.user_id and u.uid=#{id} </select> </mapper>