mybatis 关联对象mapper.xml的写法

https://github.com/zfrHJ/mybaties/blob/master/mybaties/src/com/itheima/mybatits/mapper/OrdersMapperCustom.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">
<!-- namespace命名空间特殊作用: 如果使用mapper动态代理方法,这里就需要配置mapper接口地址 -->
<mapper>
<!--根据用户id查询一条记录(返回单条记录) -->
<!-- select 标签表示sql查询,内容会封装到Mapped Statement中 可以将这个select标签称为一个statement
id:Statement 的id 用于标识select中定义的sql,id是在同一个命名空间中不允许重复 #{}:表示一个占位符,避免sql注入
parameterType:表示输入参数的类型 resultType:表示输出 结果集单条记录映射的java对象类型,select查询的字段名和resultTyep
中属性名一致,才能映射 #{}:表示parameter输入参数的变量,如歌输入参数是简单类型,使用#{}占位符 变量名可以使用value或其其它的 -->
<select id="findUserId" parameterType="int" resultType="itheima.mybaties.po.User">
select * from user where id=#{id}
</select>
<resultMap type="orders" id="ordersUserResulMap">
<!-- id:订单信息的唯一约束 -->
<!-- 如果由多个字段决定一条唯一记录,id便签需要定义多个 -->
<result column="id" property="id" />
<result column="order_number" property="order_number" />
<result column="user_id " property="user_id" />
<!-- 配置用户映射信息 将sql查询的用户信息映射到orders中的user属性中 association :用于单个失联对象的映射 property:将关联信息映射到orders的那个属性
javaType: 映射属性的类型 -->
<association property="user" javaType="com.itheima.po.User">
<!-- id:关联的用户信息的唯一约束 -->
<!-- property :id指定的列映射到关联com.itheima.po.User类的那个属性中 -->
<id column="user_id" property="id" />
<result column="username" property="username" />
<result column="address" property="address" />
</association>
</resultMap>
<!--一 对多 -->
<resultMap type="orders" id="ordersUserDetailResultMap"
extends="ordersUserResultMap">
<!-- 订单级用户信息,继承ordersUserResultMap -->
<!-- 映射订单明细信息collection:映射集合对象 property:将明细信息映射到那个集合属性中。ofType:集合中对象的类型-->
<collection property="orserdetails" ofType="com.itheima.po.Orderdetail">
<!-- id:订单明细的唯一约束
property:ofType指定类型的属性
-->
<id column="orderdetail_id" property="id"/>
<result column="item_id" property="item_id"/>
<result column="item_num" property="item_num"/>
<result column="item_price" property="item_price"/>
</collection>
</resultMap>
<select id="findOrderUserDetailList" resultMap="ordersUserDetailResultMap">
SELECT
orders.*,
user.username,
user.address,
orderdetail.id orderdetail_id,
orderdetail.item_id,
orderdetail.item_num,
orderdetail.item_price
FROM
orders,
USER,
orderdetail
WHERE orders.user_id = user.id AND orders.id =
orderdetail.orders_id
</select>
<!-- 查询订单及订单明细信息及商品信息 -->
<select id="findOrdersUserDetailItemList" resultMap="ordersUserDetailItemResultMap">
SELECT
orders.*,
user.username,
user.address,
orderdetail.id orderdetail_id,
orderdetail.item_id,
orderdetail.item_num,
orderdetail.item_price ,
items.item_detail,
items.item_name,
items.item_price item_price_price
FROM
orders,
USER,
orderdetail,
items
WHERE orders.user_id = user.id
AND
orders.id = orderdetail.orders_id
AND orderdetail.item_id = items.id
</select>
</mapper>
时间: 2024-07-29 07:16:11

mybatis 关联对象mapper.xml的写法的相关文章

mybatis中的mapper.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">

mybatis自动生成mapper.xml和接口实体类工具

mybatis的mapper.xml和实体类那些都是死的,今天接触到一个工具,只需要简单配置,然后就可以mybatis的数据库xml文件和接口和实体类,而且sql语句很全哦! 它是通过一个java包和配置文件生成的: 然后按照generator.xml配置里面的提示文件生成的目录写到那个src上面,淡然注意里面的数据库配置要和你项目的那个数据库配置文件一样,名字注意和平时数据库.实体类命名规则一样就可以: 然后双击那个批处理文件就可以生成那两个文件了: http://download.csdn.

Mybatis映射文件Mapper.xml中#和$的区别

1."#" 简单来说"#"在编译时使用"?"占位符标记,可以有效防止参数注入,相当于我们使用JDBC操作时的PreparedStatement. 2."$" 直接把参数拼接到SQL中执行相当于JDBC操作时的Statement 3.参数作为非SQL关键字传递 <insert id="addUser" parameterType="User">        insert in

springboot项目里,让tk-mybatis支持可以手写sql的mapper.xml文件

SpringBoot项目通常配合TKMybatis或MyBatis-Plus来做数据的持久化. 对于单表的增删改查,TKMybatis优雅简洁,无需像传统mybatis那样在mapper.xml文件里定义sql. 我们目前的项目呢,有一些数据分析的需求,涉及到多表关联.嵌套子查询等复杂的sql. 那么,TKMybatis是不是可以支持手写sql呢? 答案是yes! 我们知道,springboot集成tk-mybatis需添加2个依赖: <dependency> <groupId>t

mybatis-plus的 mapper.xml 路径配置的坑

spring boot整合mybatis-plus使用mysql和Oracle多数据源的时候,遇到如下问题: mybatis-plus今天遇到一个问题,就是mybatis 没有读取到mapper.xml 文件. 特此记录一下,问题如下: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.husy.mapper.SystemUserMapper.findUserByName at

Mapper.xml中对象的关联

对象的关联,特别是manytoone的关联,有两种方式:发送一条额外sql去查询和内联的方式 发送一条额外sql:当我在使用到这个关联对象的时候,我发送一条额外的sql去把这个关联的对象查询出来,然后设置到对象里面,这样容易造成n+1的问题 内联方式:在这条sql直接把关联的对象的表连接进来,把需要查询的信息全部查出来,然后直接在resultMap中拼装出关联的对象,这样就可以避免n+1的问题,但是会造成连接的性能损耗 选用原则 : 如果关联的对象要在列表中显示,那么直接使用内联的方式,会造成表

【MyBatis】Mapper XML 文件

Mapper XML文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码.MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置. cache-ref – 其他命名空间缓存配置的引用. resultMap – 是最复杂

MyBatis——Mapper.xml映射文件

Mapper.xml映射文件 转载:http://loveshisong.cn/mybatis/2015/01/22/MyBatis(%E4%B8%89)Mapper.xml%E6%98%A0%E5%B0%84%E6%96%87%E4%BB%B6.html 本文结构 select 语句简介 insert update delete 简介 Parameters 参数 ResultMap select 语句简介 查询语句是 MyBatis 中最常用的元素之一,先来个例子 <select id="

mybatis中的关联对象查询

方式1(嵌套查询): 在本类的mapper映射配置文件中的ResultMap标签中使用association子标签,对关联对象的属性进行关联 例如:User中关联Department(多对一) ----------User的mapper映射配置文件---------<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Map