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


              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;}@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 + "]";}}


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


 
                  经营信息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;}@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将在下篇免积分分享出来;


0 0