
正文
JavaSpring中级联查询
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
一对一级联查询映射文件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>








