时间:2021-05-20
1.Mybatis的sql语句返回的结果有两种
需要自定义字段,或者多表查询,一对多等关系,比resultType更强大
适合复杂查询
association:映射到POJO的某个复杂类型属性,比如订单order对象里面包含user对象
<!-- 名称空间,需要保存全局唯一,最好是和dao层的Java接口一致 可以映射sql语句到对应的方法名参数和返回值 mybatis是使用接口动态代理 --><mapper namespace="net.xiaotiancai.online_class.dao.VideoOrderMapper"> <resultMap id="VideoOrderResultMap" type="VideoOrder"> <id column="id" property="id"></id> <result column="user_id" property="userId"></result> <result column="out_trade_no" property="outTradeNo"></result> <result column="state" property="state"></result> <result column="total_fee" property="totalFee"></result> <result column="video_id" property="videoId"></result> <result column="video_title" property="videoTitle"></result> <!-- 配置属性一对一 property对应videoOrder里面的User javaType对应这个属性的类型 --> <association property="user" javaType="User"> <id column="user_id" property="id"></id> <result column="name" property="name"></result> <result column="head_img" property="headImg"></result> <result column="phone" property="phone"></result> </association> </resultMap> <!--一对一订单查询,订单内部包含用户属性--> <select id="queryVideoOrderList" resultMap="VideoOrderResultMap"> select o.id id, o.user_id, o.out_trade_no, o.state, o.total_fee, o.video_id, o.video_title, u.name, u.head_img, u.phone from video_order o left join user u on o.user_id = u.id </select></mapper>代码
// resultmap association关联查询VideoOrderMapper videoOrderMapper =sqlSession.getMapper(VideoOrderMapper.class);List<VideoOrder> videoOrderList = videoOrderMapper.queryVideoOrderList();System.out.println(videoOrderList.toString());collection: 一对多查询结果查询映射,比如user有多个订单
<resultMap id="UserOrderResultMap" type="User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="headImg" column="head_img"/> <result property="phone" column="phone"/> <!-- property 填写pojo类中集合类属性的名称 ofType 集合⾥里里⾯面的pojo对象 --> <collection property="videoOrderList" ofType="VideoOrder"> <!--配置主键,管理理order的唯⼀一标识--> <id column="order_id" property="id"/> <result column="user_id" property="userId"/> <result column="out_trade_no" property="outTradeNo"/> <result column="state" property="state"/> <result column="total_fee" property="totalFee"/> <result column="video_id" property="videoId"/> <result column="video_title" property="videoTitle"/> <result column="video_img" property="videoImg"/> </collection> </resultMap> <select id="queryUserOrder" resultMap="UserOrderResultMap"> select u.id, u.name, u.head_img, u.phone, o.id order_id, o.out_trade_no, o.user_id, o.state, o.total_fee, o.video_id, o.video_title from user u left join video_order o on u.id = o.user_id </select>代码
// resultmap association关联查询VideoOrderMapper videoOrderMapper =sqlSession.getMapper(VideoOrderMapper.class);//resultmap collection测试List<User> userList = videoOrderMapper.queryUserOrder();System.out.println(userList.toString());到此这篇关于MyBatis3.X复杂Sql查询的文章就介绍到这了,更多相关MyBatis复杂Sql查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、使用Maven创建一个Web项目为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3
Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便。使用M
mybatis模糊查询的实现方法mybatis的逆向助手确实好用,可以省去很多编写常规sql语句的时间,但是它没办法自动生成模糊查询语句,但开发中模糊查询是必不
模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询。直接传参法直接传参法,就是将要查询的关键字keyword,在代码
目的:在使用mybatis框架中mapper文件有自动生成,但有时需要自己添加sql语句进行开发,当遇到需要使用if进行条件判断的时候该怎么写?查询sql语句如