猿蜕变13——一文彻底搞懂mybatis规范和标签

本文详细介绍了Mybatis的规范和常用标签的使用,包括resultMap、动态代理、if、where、choose、foreach和sql标签。通过实例解析了如何处理字段映射、简化代码、实现条件查询和SQL复用。同时强调了数据库命名规范和特殊字符在XML中的处理方法。
摘要由CSDN通过智能技术生成

看过之前的蜕变系列文章,相信你对mybatis有了初步的认识。很多朋友编写mybatis比较随意,甚至工具生成的痕迹都经常见到,这个不是很好,sql是比较关键和核心的地方,不能骚整噢。我们今天进一步来了解下mybatis的一些规范写法和常用标签。

每月底工厂君会根据后台记录筛选转发文章到朋友圈的前三位的朋友,给与奖励,第一名100元,第二名50元,第三名30元的现金奖励。

猿蜕变同样是一个原创系列文章,帮助你从一个普通的小白,开始掌握一些行业内通用的框架技术知识以及锻炼你对系统设计能力的提升,完成属于你的蜕变,更多精彩内容,敬请大家关注公主号猿人工厂,点击猿人养成获取

现在又要告诉大家一个不幸的消息:数据库的命名是有规范的,基本上不太会出现数据库字段名和类中的属性名一一对应的情况。不要问我为什么,因为大家都这么搞,大家是得罪不起的,如果你把数据库字段名和类中的属性名一致了,准备承受dba来自地狱的怒吼吧。我们之前为了解决这个问题,在sql语句中使用了as 的别名语法,这样写其实是很费力的。Mybatis提供了resultMap来解决这个问题,我们回到正途使用resultMap。

resultType实际上是将数据库表字段与JavaBean中的属性建立映射关系,在编写SQL的时候使用resultMap,mybatis会依据resultMap中的映射关系将数据库返回的记录映射到对应的字段上。

修改TravelRouteMapper.xml增加一个resultMap

 <resultMap type="TravelRoute" id="TravelRouteType" >
      <result column = "travel_route_id"property="travelRouteId"/>      <result column = "travel_route_name"property="travelRouteName"/>      <result column = "travel_route_price"property="travelRoutePrice"/>      <result column = "travel_route_introduce"property="travelRouteIntroduce"/>      <result column = "travel_route_flag"property="travelRouteFlag"/>      <result column = "travel_route_date"property="travelRouteDate"/>      <result column = "isThemeTour"property="isThemeTour"/>      <result column = "travel_route_count"property="travelRouteCount"/>      <result column = "travel_route_cid"property="travelRouteCid"/>      <result column = "travel_route_image"property="travelRouteImage"/>      <result column ="travel_route_seller_id"property="travelRouteSellerId"/></resultMap>

 

我们将之前使用as 语法的queryTravelByPage和queryTravelById的as xxx去掉,将resultType改为TravelRoute。留下一个queryTravelByName当作复习语法的例子就好,就不赶尽杀绝了。

  <select id="queryTravelByPage"resultMap="TravelRouteType" parameterType="java.util.Map">        select       travel_route_id ,       travel_route_name ,       travel_route_price ,       travel_route_introduce ,       travel_route_flag ,       travel_route_date ,       isThemeTour ,       travel_route_count ,       travel_route_cid ,       travel_route_image ,       travel_route_seller_id          from   travel_route order by travel_route_id desc limit #{startRow},#{endRow}         </select>        <select id="queryTravelById"resultMap="TravelRouteType" parameterType="Long">        select       travel_route_id ,       travel_route_name ,       travel_route_price ,       travel_route_introduce ,       travel_route_flag ,       travel_route_date ,       isThemeTour ,       travel_route_count,       travel_route_cid ,       travel_route_image ,       travel_route_seller_id           from   travel_route where travel_route_id =#{travelRouteId}       </select>      

 

运行测试程序,保证代码修改正确!

 

之前编写的例子中,我们都自己实现了dao接口,其实mybatis提供了动态代理的方式,无需由开发人员编写实现类。使用mapper的动态代理,可以简化冗余代码的编写,也是实际开发中推荐的写法。接下来,我们就一起来看下怎样使用动态代理。

1.在TravelRouteMapper.xml中的mapp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值