Mybatis - 高级映射 (复习,数据表分析,一对一 之 resultType )
来源:互联网 发布:万达怎么了知乎 编辑:程序博客网 时间:2024/05/18 02:45
1.复习
MyBatis是一个持久层框架,mybatis是不完全的ORM框架。Sql语句需要程序员自己编写,但是Mybatris也有映射(输入映射和输出映射);
MyBatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上,对sql语句优化非常方便,适用于需要变化较多的项目,比如互联网项目;
执行过程 :
1)配置mybatis的配置文件 ,SqlMapConfig.xml 名称不固定;
2)通过配置文件,价值mybatis运行环境,创建SqlSessionFactory回话工厂,使用单例模式;
3)通过SqlSessionFactory创建SqlSession ,SqlSession 是一个面向用户接口的,线程不安全的,建议SqlSession应用场合方法体内;
4)调用sqlSession的方法去操作数据,如果需要提交事务,需要执行SqlSession的commit()方法;
5)释放资源,关闭SqlSession;
开发Dao方法:
1)原始Dao方法
编写dao接口和dao实现类,需要在dao的实现类里注入一个SqlSessionFactory工厂;
2)Mapper代理开发方法(建议使用)
只需要编写Dao接口,还需编写mapper.xml映射文件和mapper.java需要遵循一个开发规范:
[1].mapper.xml中namespace就是mapper.java的类全路径;
[2].mapper.xml中statement的id就是mapper.java的方法名一致;
[3].mappet.xml中statement的paramterType指定的输入参数和mapper.java的方法输入参数类型一致;
[4].mappet.xml中statement的resultType 指定的输出映射和mapper.java的返回值类型一致,没有返回值,则为void;
SqlMapConfig.xml配置文件 :
可以配置properties属性,别名,mapper加载等
1)输入映射
paramterType :指定输入参数类型可以为简单类型,pojo ,hashmap等;
对于综合查询,建议paramteTypo使用包装的pojo,有利于系统拓展;
2)输出映射
resultType:查询到的列明和resultType指定的pojo的属性名一致,才能映射成功;
resultMap :可以通过resultMap完成一些高级映射;
如果查询到的列表和映射的pojo的属性名不一致时,通过resultMap设置列名和属性名之间的对应关系,可以完成映射;
高级映射 :将关联查询的列映射到一个pojo属性中(一对一);将关联查询的列映射到一个List<pojo>中(一对多);
动态sql:if判断 和 Sql片段,重点;
2.数据库业务实现
(1)规定场景
客户表 :客户信息,也是每个经营店面的负责人,可以负责多个经营信息;
经营信息表 :经营店面的信息表,每个经营店面信息有多条资产信息;
资产表 :资产信息,每个资产信息,都有资产授权信息;
资产授权信息表:资产的授权信息;
(2)四个表之间的关系
(3)创建客户表和数据准备
1)创建客户表
--客户表CREATE TABLE F_CLIENT( ID NUMBER(12) PRIMARY KEY,--用户编号 USERNAME VARCHAR2(20) NOT NULL,--用户姓名 CLIENT_CERTIFICATE_NO VARCHAR2(20) NOT NULL UNIQUE,--证件号码 BORN_DATE DATE,--出生日期 FAMILY_REGISTER_ADDRESS VARCHAR2(200),--家庭住址 NOW_ADDRESS VARCHAR2(200) NOT NULL,--现在住址 CONTACT_MODE VARCHAR2(50) NOT NULL,--联系方式 URGENCY_CONTACT_MODE VARCHAR2(50) NOT NULL,--紧急联系方式 CREATE_DATE DATE NOT NULL--创建时间);
insert into f_client(id,username,client_certificate_no,born_date,family_register_address,now_address,contact_mode,urgency_contact_mode,create_date) values (14,'yuan','311209070127',to_date('1993-03-12','yyyy-mm-dd'),'河南省焦作市','河南省河南理工大学','150000000','110',sysdate);insert into f_client(id,username,client_certificate_no,born_date,family_register_address,now_address,contact_mode,urgency_contact_mode,create_date) values( 15,'yang','311209070126',to_date('1993-04-12','yyyy-mm-dd'),'河南温县','河南理工大学','3987321','110',sysdate); insert into f_client values( 16,'yang','311209070129',to_date('1997-04-12','yyyy-mm-dd'),'河南新乡','河南理工大学','3987321','110',sysdate);insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (1, 'sawyer', '1593224056', to_date('10-10-1980', 'dd-mm-yyyy'), '北京市海淀区东北旺', 'peaking', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (2, 'yangly', '1593224057', to_date('11-10-1980', 'dd-mm-yyyy'), '北京市海淀区东北旺', 'peaking', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (3, 'gaozhy', '1593224058', to_date('12-12-1980', 'dd-mm-yyyy'), '湖北省洪山区黄家湖', 'shanghai', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (4, 'wangmj', '1593224059', to_date('13-04-1980', 'dd-mm-yyyy'), '湖北省洪山区黄家湖', 'hubei', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (5, 'lijing', '1593224060', to_date('14-07-1980', 'dd-mm-yyyy'), '湖北省洪山区黄家湖', 'tianjing', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (6, 'wangpl', '1593224061', to_date('15-09-1980', 'dd-mm-yyyy'), '北京市朝阳区百子湾', 'peaking', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (7, 'lixiao', '1593224062', to_date('16-09-1980', 'dd-mm-yyyy'), '北京市朝阳区百子湾', 'henan', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (8, 'zhaoyf', '1593224063', to_date('17-07-1980', 'dd-mm-yyyy'), '北京市海淀区五道口', 'henan', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (9, 'suyibo', '1593224064', to_date('18-09-1980', 'dd-mm-yyyy'), '北京市海淀区东北旺', 'hebei', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (10, 'luojh', '1593224065', to_date('19-09-1980', 'dd-mm-yyyy'), '北京市朝阳区百子湾', 'heilongjiang', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (11, 'mazhb', '1593224066', to_date('10-08-1980', 'dd-mm-yyyy'), '北京市海淀区东北旺', 'peaking', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (12, 'gaohf', '1593224067', to_date('18-08-1980', 'dd-mm-yyyy'), '北京市朝阳区百子湾', 'peaking', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));insert into F_CLIENT (ID, USERNAME, CLIENT_CERTIFICATE_NO, BORN_DATE, FAMILY_REGISTER_ADDRESS, NOW_ADDRESS, CONTACT_MODE, URGENCY_CONTACT_MODE, CREATE_DATE)values (13, 'chenb', '1593224068', to_date('13-08-1980', 'dd-mm-yyyy'), '北京市海淀区西二旗', 'peaking', '123456789', '987654321', to_date('15-12-2015 08:47:13', 'dd-mm-yyyy hh24:mi:ss'));
3)字段属性
private Integer id; private String username; private String client_certificate_no; private Date born_date; private String family_register_address; private String now_address; private String contact_mode; private String urgency_contact_mode; private Date create_data;
(3)经营信息表
1)创建信息表
CREATE TABLE F_OPERATION( ID NUMBER(12) PRIMARY KEY,--资产编号 CLIENT_ID NUMBER(12) FOREIGN KEY REFERENCES F_CLIENT(ID),--用户编号 OPERATE_INFOMATION_DESCRIBE VARCHAR2(120) NOT NULL,--资产信息描述 POSSESS_SHAREHOLDING NUMBER(4,2) NOT NULL,--持股比例 OPERATE_ADDRESS VARCHAR2(50) NOT NULL,--经营地址 YEAR_AVG_INCOME VARCHAR2(50) NOT NULL,--年收入 BEGIN_OPERATION_TIME DATE NOT NULL,--开始经营日期 EMPLOYEES_AMOUNT NUMBER(6) NOT NULL,--员工总数 LEGAL_PERSON_NAME VARCHAR2(20) NOT NULL,--法人姓名 LEGAL_PERSON_CRD_NUMBER VARCHAR2(50) NOT NULL,--法人证件号码 OPERATE_CRD_NUMBER VARCHAR2(50) NOT NULL,--经营证件号码 UPDATE_TIME DATE NOT NULL--更新时间)
2)初始化数据
insert into f_operation values(10,14,'这是一推资产',0.8,'河南理工大学兰五544','12',to_date('2015-10-10','yyyy-dd-mm'), 23,'吴迪','3112090703','3112090703',sysdate); insert into f_operation values ( 11,14,'这是另一推资产',0.1,'河南理工大学超市','10',to_date('2015-10-11','yyyy-dd-mm'),'100','杨大神','3112090701','3112090701',sysdate); insert into f_operation values ( 12,15,'这是另一推资产',0.1,'河南理工大学超市','10',to_date('2015-10-11','yyyy-dd-mm'),'100','杨大神','3112090702','3112090702',sysdate); insert into f_operation values ( 13,16,'这是另一推资产',0.1,'河南理工大学超市','10',to_date('2015-10-11','yyyy-dd-mm'),'100','杨大神','3112090704','3112090704',sysdate);insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (1, 1, '是一份资产的信息', 0.33, '北京市海淀区东北旺', '10000000', to_date('10-09-1999', 'dd-mm-yyyy'), 100, 'yangll', '1567843925', '1567843925', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (2, 2, '是一份资产的信息', 0.50, '北京市海淀区西二旗', '100000000', to_date('17-04-1999', 'dd-mm-yyyy'), 500, 'yangdd', '1567678978', '1567678978', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (3, 1, '是一份资产的信息', 0.20, '北京市海淀区东北旺', '15000000', to_date('18-09-1999', 'dd-mm-yyyy'), 70, 'yangmm', '15468756778', '15468756778', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (4, 2, '是一份资产的信息', 0.16, '湖北省洪山区黄家湖', '18000000', to_date('20-10-1999', 'dd-mm-yyyy'), 10, 'wangss', '68743368594', '68743368594', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (5, 4, '是一份资产的信息', 0.09, '北京市海淀区东北旺', '10000000', to_date('05-09-1997', 'dd-mm-yyyy'), 120, 'sangbb', '47389434043', '47389434043', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (6, 1, '是一份资产的信息', 0.05, '湖北省洪山区黄家湖', '100000000', to_date('13-06-1999', 'dd-mm-yyyy'), 1000, 'lihh', '90893472119', '90893472119', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (7, 7, '是一份资产的信息', 0.50, '北京市海淀区东北旺', '10000000', to_date('19-08-1998', 'dd-mm-yyyy'), 19, 'hehe', '15654783034', '15654783034', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (8, 13, '是一份资产的信息', 0.70, '北京市朝阳区百子湾', '1000000', to_date('10-09-1999', 'dd-mm-yyyy'), 40, 'heihei', '15678445645', '15678445645', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));insert into F_OPERATION (ID, CLIENT_ID, OPERATE_INFOMATION_DESCRIBE, POSSESS_SHAREHOLDING, OPERATE_ADDRESS, YEAR_AVG_INCOME, BEGIN_OPERATION_TIME, EMPLOYEES_AMOUNT, LEGAL_PERSON_NAME, LEGAL_PERSON_CRD_NUMBER, OPERATE_CRD_NUMBER, UPDATE_TIME)values (9, 4, '是一份资产的信息', 1.00, '北京市海淀区东北旺', '1000000', to_date('10-09-1999', 'dd-mm-yyyy'), 80, 'hahaha', '15098239749', '15098239749', to_date('15-12-2015 10:09:24', 'dd-mm-yyyy hh24:mi:ss'));
3)字段属性
//资产编号private Integer id;//用户编号private Integer client_id;//资产信息描述private String operate_infomation_describe;//持股比例private Integer possess_sharholding;//经营地址private String operate_address;//年收入private String year_avg_income;//开始经营日期private Date begin_operation_time;//员工总数private Integer employees_amount;//法人姓名private String legal_person_name;//法人证件号码private String legal_person_crd_number;//经营证件号码private String operate_crd_number;//更新时间private Date update_time;
(4)资产表
1)创建资产表
--F_ASSET :经营信息资产表CREATE TABLE F_ASSET( ID NUMBER(12) PRIMARY KEY,--资产编号 OPERATION_ID NUMBER(12) REFERENCES F_OPERATION(ID),--经营信息id ASSET_NAME VARCHAR2(20) NOT NULL,--资产名称 ASSET_DESCRIBE VARCHAR2(150),--资产简介 ASSET_ADDRESS VARCHAR2(150) NOT NULL,--资产所在地 ASSET_CREDENTIALS_NAME VARCHAR2(50) NOT NULL,-- ASSET_CREDENTIALS_NUMBER VARCHAR2(50) NOT NULL, ASSET_MARKET_VALUATION NUMBER(12,2) NOT NULL, PLEDGE NUMBER(1) NOT NULL, UPDATE_TIME DATE NOT NULL--更新日期)
2)初始化数据
insert into f_asset values(1,1,'小米公司','雷军的公司,不是我的公司','中国.北京','我是资产我是资产','我是资产','1234542',1,sysdate);insert into f_asset values(2,2,'百度','度娘的公司,不是我的公司','中国.北京','我是资产2我是资产','我2是资产','42323',1,sysdate);insert into f_asset values(3,3,'谷哥','谷哥的公司,是','美国某某地','我是资产2为我是资产','我2为资产','4232323',1,sysdate);insert into f_asset values(4,1,'华为','不雷军的公司,也不是我的公司','中国.北京','我是资产我是资产','我是资产','2321233',1,sysdate);insert into f_asset values(5,2,'奇虎360','360杀毒公司,不是我的公司','中国.北京','我是资s产2我是资产','我2是资产','42321',1,sysdate);insert into f_asset values(6,3,'Coolpad','Coolpad的公司,cool','未知地方','我是资是 是产','我2为资那就产','4232323',1,sysdate);
3)字段属性
private Integer id;private Integer operation_id;private String assetName;private String assetDescribe;private String assetAddress;private String assetCredentialsName;private String assetCredentialsNumber;private DOUBLE assetMarketValuation;private Integer pledge;private Date updateTime;
(5)授权信息表
1)创建授权表
--用户资产授权信息表CREATE TABLE F_CREDIT( ID NUMBER(12) PRIMARY KEY, ASSET_ID NUMBER(12) REFERENCES F_ASSET(ID),--资产信息id NOW_CREDIT_LIMIT NUMBER(11,2) NOT NULL, --授权码 FROZEN_LIMIT NUMBER(11,2) NOT NULL, --授权信息码 UPDATE_TIME DATE NOT NULL)
2)初始话数据
insert into F_CREDIT values(1,2,31120907,410825,sysdate);insert into F_CREDIT values(2,1,31120904,411666,sysdate);insert into F_CREDIT values(3,3,31120909,418888,sysdate);
3)字段属性
private int id;private int assetId;private int nowCreditLimit;private int frozenLimit;private Date updateTime;
3.一对一实现(resultType)
(1)业务描述
package cn.labelnet.pojo;import java.util.Date;/** * 经营信息实体类 * * 作者 :原明卓 * 时间 :2015年12月22日 上午9:22:57 * 包名 :cn.labelnet.pojo * 描述 :TODO */public class Operation {//资产编号private Integer id;//用户编号private Integer client_id;//资产信息描述private String operate_infomation_describe;//持股比例private Integer possess_sharholding;//经营地址private String operate_address;//年收入private String year_avg_income;//开始经营日期private Date begin_operation_time;//员工总数private Integer employees_amount;//法人姓名private String legal_person_name;//法人证件号码private String legal_person_crd_number;//经营证件号码private String operate_crd_number;//更新时间private Date update_time;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getClient_id() {return client_id;}public void setClient_id(Integer client_id) {this.client_id = client_id;}public String getOperate_infomation_describe() {return operate_infomation_describe;}public void setOperate_infomation_describe(String operate_infomation_describe) {this.operate_infomation_describe = operate_infomation_describe;}public Integer getPossess_sharholding() {return possess_sharholding;}public void setPossess_sharholding(Integer possess_sharholding) {this.possess_sharholding = possess_sharholding;}public String getOperate_address() {return operate_address;}public void setOperate_address(String operate_address) {this.operate_address = operate_address;}public String getYear_avg_income() {return year_avg_income;}public void setYear_avg_income(String year_avg_income) {this.year_avg_income = year_avg_income;}public Date getBegin_operation_time() {return begin_operation_time;}public void setBegin_operation_time(Date begin_operation_time) {this.begin_operation_time = begin_operation_time;}public Integer getEmployees_amount() {return employees_amount;}public void setEmployees_amount(Integer employees_amount) {this.employees_amount = employees_amount;}public String getLegal_person_name() {return legal_person_name;}public void setLegal_person_name(String legal_person_name) {this.legal_person_name = legal_person_name;}public String getLegal_person_crd_number() {return legal_person_crd_number;}public void setLegal_person_crd_number(String legal_person_crd_number) {this.legal_person_crd_number = legal_person_crd_number;}public String getOperate_crd_number() {return operate_crd_number;}public void setOperate_crd_number(String operate_crd_number) {this.operate_crd_number = operate_crd_number;}public Date getUpdate_time() {return update_time;}public void setUpdate_time(Date update_time) {this.update_time = update_time;}@Overridepublic String toString() {return "Operation [id=" + id + ", client_id=" + client_id+ ", operate_infomation_describe="+ operate_infomation_describe + ", possess_sharholding="+ possess_sharholding + ", operate_address=" + operate_address+ ", year_avg_income=" + year_avg_income+ ", begin_operation_time=" + begin_operation_time+ ", employees_amount=" + employees_amount+ ", legal_person_name=" + legal_person_name+ ", legal_person_crd_number=" + legal_person_crd_number+ ", operate_crd_number=" + operate_crd_number+ ", update_time=" + update_time + "]";}}
import java.util.Date;/** * 客户信息实体类 * * 作者 :原明卓 * 时间 :2015年12月22日 上午9:21:51 * 包名 :cn.labelnet.pojo * 描述 :TODO */public class Client { //用户编号 private Integer id; //用户姓名 private String username; //证件号码 private String client_certificate_no; //出生日期 private Date bron_date; //家庭住址 private String family_register_address; //现在住址 private String now_address; //联系方式 private String contact_mode; //紧急联系方式 private String urgency_contact_mode; //创建时间 private Date create_date;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getClient_certificate_no() {return client_certificate_no;}public void setClient_certificate_no(String client_certificate_no) {this.client_certificate_no = client_certificate_no;}public Date getBron_date() {return bron_date;}public void setBron_date(Date bron_date) {this.bron_date = bron_date;}public String getFamily_register_address() {return family_register_address;}public void setFamily_register_address(String family_register_address) {this.family_register_address = family_register_address;}public String getNow_address() {return now_address;}public void setNow_address(String now_address) {this.now_address = now_address;}public String getContact_mode() {return contact_mode;}public void setContact_mode(String contact_mode) {this.contact_mode = contact_mode;}public String getUrgency_contact_mode() {return urgency_contact_mode;}public void setUrgency_contact_mode(String urgency_contact_mode) {this.urgency_contact_mode = urgency_contact_mode;}public Date getCreate_date() {return create_date;}public void setCreate_date(Date create_date) {this.create_date = create_date;}@Overridepublic String toString() {return "Client [id=" + id + ", username=" + username+ ", client_certificate_no=" + client_certificate_no+ ", bron_date=" + bron_date + ", family_register_address="+ family_register_address + ", now_address=" + now_address+ ", contact_mode=" + contact_mode + ", urgency_contact_mode="+ urgency_contact_mode + ", create_date=" + create_date + "]";} }
package cn.labelnet.pojo;import java.util.Date;/** * 经营信息扩展类,满足查询语句 : * select fo.*,fc.username,fc.born_date,fc.family_register_address from f_operation fo,f_client fc where fo.client_id=fc.id; * 经营信息的所有信息和客户的姓名,生日,家庭住址 * 描述: TODO * 作者 :原明卓 * 时间 :2015年12月23日 上午10:36:04 * 版本 :1.0 */public class OperationCustion extends Operation{/* fc.username, fc.born_date, fc.family_register_address */private String username;private Date born_date;private String family_register_address;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Date getBorn_date() {return born_date;}public void setBorn_date(Date born_date) {this.born_date = born_date;}public String getFamily_register_address() {return family_register_address;}public void setFamily_register_address(String family_register_address) {this.family_register_address = family_register_address;}@Overridepublic String toString() {return "OperationCustion [username=" + username + ", born_date="+ born_date + ", family_register_address="+ family_register_address + "]";}}
(2)Mapper.xml 之 reusltType 实现
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 经营信息的mapper --><mapper namespace="cn.labelnet.mapper.OperationMapper"><!-- 业务 : 查询经营信息及其经营者的姓名,生日,家庭住址 一对一查询 使用resultType实现 --><select id="findOPerationClient" resultType="cn.labelnet.pojo.OperationCustion">selectfo.*,fc.username,fc.born_date,fc.family_register_addressfromf_operation fo,f_client fcwherefo.client_id=fc.id</select></mapper>
(3)Mapper.java 实现
public List<OperationCustion> findOPerationClient() throws Exception;
(4)测试
private SqlSessionFactory sqlFactory;@Beforepublic void setUp() throws Exception {InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");sqlFactory=new SqlSessionFactoryBuilder().build(is);}@Testpublic void testFindOPerationClient() throws Exception {SqlSession session=sqlFactory.openSession();OperationMapper om = session.getMapper(OperationMapper.class);List<OperationCustion> list = om.findOPerationClient();System.out.println(list);}
(5)结果
4.总结
下篇继续一对一之 resultMap 实现, 一对多,多对多,延迟加载实现,Demo将在下篇免积分分享出来;
- Mybatis - 高级映射 (复习,数据表分析,一对一 之 resultType )
- MyBatis高级映射之-一对一(一对多)关联映射
- MyBatis一对一查询使用ResultType映射
- MyBatis一对一查询使用ResultType映射
- 【Mybatis】---高级映射之一对一查询
- MyBatis高级映射之一对一查询
- MyBatis-高级映射:一对一
- MyBatis高级映射:一对一
- Mybatis(高级映射,一对一)
- MyBatis高级映射(一对一查询)
- mybatis高级结果映射学习之一对一映射(六)
- mybatis学习高级映射一对一之resultMap映射
- Mybatis高级映射一对一查询
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson11_一对一关联映射(ResultMap/ResultType)
- 【MyBatis学习08】高级映射之一对一查询
- mybatis学习之高级映射中的一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- 【MyBatis学习08】高级映射之一对一查询
- Yii2-admin RBAC权限管理的实现
- ./configure,make,make install的作用
- 这是一篇测试
- AngularJS权威教程 第7章 过滤器filters
- 1.数据挖掘概念笔记——引论
- Mybatis - 高级映射 (复习,数据表分析,一对一 之 resultType )
- 2.数据挖掘概念笔记——认识数据
- 待完成任务(一) 利用自己的数据集 利用lenet网络进行训练
- C++中struct和class的区别
- 3.数据挖掘概念笔记——数据预处理
- 4.数据挖掘概念笔记——数据仓库与OLAP
- 时间解析
- C - Ping pong hdu2492
- 仿QQ聊天列表界面demo