Mybatis - 高级映射 (复习,数据表分析,一对一 之 resultType )

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--创建时间
);


              2)插入表初始数据

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)业务描述

                  业务 : 查询经营信息及其经营者的姓名,生日,家庭住址 一对一查询
                  经营信息Pojo :
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;
	}
	@Override
	public 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 + "]";
	}
}


                 用户实体Pojo :
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;
	}
	@Override
	public 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 + "]";
	}
     
     
     
}


 
                  经营信息Pojo拓展类 :
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;
	}
	@Override
	public 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 mapper
PUBLIC "-//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">
		select
		fo.*,
		fc.username,
		fc.born_date,
		fc.family_register_address
		from
		f_operation fo,
		f_client fc
		where
		fo.client_id=fc.id
	</select>
</mapper>


     (3)Mapper.java 实现

public List<OperationCustion> findOPerationClient() throws Exception;

     (4)测试

private SqlSessionFactory sqlFactory;
	
	@Before
	public void setUp() throws Exception {
		InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
		sqlFactory=new SqlSessionFactoryBuilder().build(is);
	}

	@Test
	public 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将在下篇免积分分享出来;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值