Mybatis 鉴别器
来源:互联网 发布:ios比价软件app 编辑:程序博客网 时间:2024/05/17 04:05
使用鉴别器,根据表中某个字段区别数据,将查询出的数据自动封装成不同类型的对象。
步骤
实现此案例需要按照如下步骤进行。
步骤一:建表
创建汽车表,并插入预置数据,脚本如下:
- CREATE TABLE t_car (
- id NUMBER(11) NOT NULL,
- type VARCHAR2(1) default NULL,
- doorSize NUMBER(11) default NULL,
- boxSize NUMBER(11) default NULL,
- color VARCHAR2(20) default NULL,
- PRIMARY KEY (id)
- );
- insert into t_car values (1,'C',2,null,'红色');
- insert into t_car values (2,'C',4,null,'黑色');
- insert into t_car values (3,'T',null,1,'蓝色');
- insert into t_car values (4,'T',null,2,'蓝色');
- commit;
步骤二:创建实体类
创建交通工具实体类Vehicle,封装汽车表中的公用字段,代码如下:
- package cn.edu.tju.entity;
- /**
- * 交通工具实体类,封装汽车表中公用的字段
- */
- public class Vehicle {
- private int id;
- private String type;
- private String color;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getType() {
- return type;
- }
- public void setType(String type) {
- this.type = type;
- }
- public String getColor() {
- return color;
- }
- public void setColor(String color) {
- this.color = color;
- }
- }
创建小汽车实体类,继承于Vehicle,并封装小汽车相关的字段,代码如下:
- package cn.edu.tju.entity;
- /**
- * 小汽车实体类,封装小汽车相关字段
- */
- public class Car extends Vehicle {
- private int doorSize;
- public int getDoorSize() {
- return doorSize;
- }
- public void setDoorSize(int doorSize) {
- this.doorSize = doorSize;
- }
- }
创建卡车实体类,继承于Vehicle,并封装卡车相关的字段,代码如下:
- package cn.edu.tju.entity;
- /**
- * 卡车实体类,封装卡车相关的字段
- */
- public class Truck extends Vehicle {
- private int boxSize;
- public int getBoxSize() {
- return boxSize;
- }
- public void setBoxSize(int boxSize) {
- this.boxSize = boxSize;
- }
- }
步骤三:创建DAO接口
创建DAO接口VehicleDao,并增加查询全部汽车数据的方法,代码如下:
- package cn.edu.tju.dao;
- import java.util.List;
- import cn.edu.tju.annotation.MyBatisRepository;
- import cn.edu.tju.entity.Vehicle;
- @MyBatisRepository
- public interface VehicleDao {
- List<Vehicle> findAll();
- }
步骤四:创建映射文件
创建映射文件VehicleMapper.xml,并增加SQL实现查询全部汽车,代码如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
- <mapper namespace="com.tarena.dao.VehicleDao">
- <resultMap id="vehicleMap" type="c cn.edu.tju.entity.Vehicle">
- <id property="id" column="ID" />
- <result property="color" column="COLOR" />
- <discriminator javaType="java.lang.String" column="TYPE">
- <case value="T" resultType=" cn.edu.tju.entity.Truck">
- <result property="boxSize" column="BOXSIZE" />
- </case>
- <case value="C" resultType="cn.edu.tju.entity.Car">
- <result property="doorSize" column="DOORSIZE" />
- </case>
- </discriminator>
- </resultMap>
- <select id="findAll" resultMap="vehicleMap">
- select * from T_CAR
- </select>
- </mapper>
步骤五:增加测试方法
在TestMapping中增加方法,测试查询全部汽车的方法,代码如下:
- package cn.edu.tju..test;
- import java.sql.Date;
- import java.util.List;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import cn.edu.tju.daoDeptDao;
- import cn.edu.tju.dao.EmpDao;
- import cn.edu.tju.VehicleDao;
- import cn.edu.tju.entity.Dept;
- import cn.edu.tju.entity.Emp;
- import cn.edu.tju.entity.Vehicle;
- /**
- * 测试MyBatis关联映射
- */
- public class TestMapping {
- //其他方法略
- /**
- * 鉴别器:
- * 查询汽车表,根据类型封装成不同的对象。
- */
- @Test
- public void test6() {
- ApplicationContext ctx = new ClassPathXmlApplicationContext(
- "applicationContext.xml");
- VehicleDao dao = ctx.getBean(VehicleDao.class);
- List<Vehicle> list = dao.findAll();
- for (Vehicle v : list) {
- System.out.println(v);
- }
- }
- }
1 0
- Mybatis鉴别器
- mybatis-鉴别器
- Mybatis 鉴别器
- Mybatis 鉴别器
- mybatis的select_resultMap_discriminator鉴别器
- mybatis resultMap鉴别器使用
- MyBatis的discriminator鉴别器的作用
- MyBatis级联探讨第二篇——鉴别器(discriminator)
- mybatis-映射器-resultMap结果集映射3collection一对多级联&鉴别器
- 鉴别器(discriminator)
- Linq鉴别器列
- Mybaties的鉴别器
- discriminator鉴别器的使用
- mybatis_SQL映射(4)_鉴别器
- Hibernate 鉴别器 遇到的一个SQLGrammerException
- hiernate利用鉴别器实现继承关系(加图片)
- Hibernate 菜鸟教程 13 继承 鉴别器与内连接相结合
- 生成人脸修复模型:同时使用两个鉴别器,直接合成逼真人脸
- java 中的宏变量
- 结合框架的图片1
- Linux C学习--getline()函数
- 虚拟主机做服务器 PHP+Android客户端+MySql数据库
- Apache的配置详解,最好的Apache配置文档。
- Mybatis 鉴别器
- Failed to load platform plugin "windows" Qt5
- Ubuntu11.04 sudo apt-get install flex无法更新的问题解决方法
- apache mina: mina对http协议支持
- 发送标准广播和有序广播,以及广播的截断
- phoneGap在iOS上支持ajax https访问
- ADT bundle和Eclipse和Android Studio有什么区别---安卓初步
- 关于iOS app微信支付Xcode配置问题
- 【大学生求职最有用证书】