app开发者平台在数字化时代的重要性与发展趋势解析
1119
2022-12-15
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接口【只关注查询】
phttp://ackage 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的结果映射
扩展mapper.xml的结果映射
或者是
...
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~