mybatis如何实现继承映射
目录
- mybatis 继承映射
- 类图
- 三个实体类的代码
- 分析
- mybatis xml映射文件的继承问题
- 1、首先dao层mapper.java需要继承原来的接口
- 2、继承原始mapper.xml的结果映射
mybatis 继承映射 ORM框架的优势在于能让我们利用面向对象的思维去操作数据库,hibernate作为重量级的ORM框架对面向对象的支持很强大。作为半自动化的mybatis,对面向对象的支持也是很完备的。这篇文章就来讨论一下如何利用mybatis实现继承映射。
类图
文章图片
有一个机动车父类,它有两个子类:Car和Bus
关系模型(t_vehicle)
文章图片
ORM映射有一个原则:对象模型细粒度,关系模型粗粒度。所以我们将所有的车都存储一张表里(t_vehicle),通过鉴别字段vType来区分车的类型("c"代表Car,"b"代表Bus)
三个实体类的代码
Vehicle
package com.tgb.mybatis.model; public class Vehicle { //主键id private String id; //车的名字 private String name; public String getId() {return id; } public void setId(String id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } }
Car
package com.tgb.mybatis.model; public class Car extends Vehicle { //车门的数量 private int carDoor; //车的牌子 private String band; public int getCarDoor() {return carDoor; } public void setCarDoor(int carDoor) {this.carDoor = carDoor; } public String getBand() {return band; } public void setBand(String band) {this.band = band; } }
Bus
package com.tgb.mybatis.model; public class Bus extends Vehicle { //公共汽车的容量 private int capacity; public int getCapacity() {return capacity; } public void setCapacity(int capacity) {this.capacity = capacity; } }
看看对“车”进行操作的Mapper接口【只关注查询】
package com.tgb.mybatis.data; import com.tgb.mybatis.model.Bus; import com.tgb.mybatis.model.Car; import com.tgb.mybatis.model.Vehicle; public interface VehicleMapper { //根据id查询机动车 Vehicle getVechicleById(String id); //根据名字查询小汽车 Car getCarByName(String name); }
xml方式ORM映射
SELECT * FROM TB_VEHICLE WHERE VID = #{id}SELECT * FROM TB_VEHICLE WHERE VTYPE='c' AND VName = #{id}
分析
其中最为关键的就是
客户端测试代码
VehicleMapper mapper = session.getMapper(VehicleMapper.class); Vehicle vehicle = mapper.getVechicleById("1"); System.out.println(vehicle.getName()); Car car = mapper.getCarByName("路虎007"); System.out.println(car.getBand());
很简单的一个例子,和大家分享一下。
mybatis xml映射文件的继承问题
1、首先dao层mapper.java需要继承原来的接口
原dao层接口
public interface TagMapper {/*** This method was generated by MyBatis Generator.* This method corresponds to the database table t_tag** @mbg.generated*/long countByExample(TagExample example); /*** This method was generated by MyBatis Generator.* This method corresponds to the database table t_tag** @mbg.generated*/int deleteByExample(TagExample example); }
扩展后的dao层接口
public interface TagExtendMapper extends TagMapper {...}
2、继承原始mapper.xml的结果映射
原始mapper.xml的结果映射
【mybatis如何实现继承映射】扩展mapper.xml的结果映射
或者是
...
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现