scott映射java

sql语句:

drop teble if exists ‘tb_dept’
(如果表存在就覆盖在创建)

DROP TABLE IF EXISTS `tb_dept`;
CREATE TABLE `tb_dept`  (
  `deptno` tinyint(2) UNSIGNED NOT NULL  COMMENT '部门编号',
  `dname` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门名称',
  `loc` varchar(13) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门地址',
  PRIMARY KEY (`deptno`) USING BTREE
) ENGINE = InnoDB  CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `tb_dept` VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO `tb_dept` VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO `tb_dept` VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO `tb_dept` VALUES (40, 'OPERATIONS', 'BOSTON');

数据库视图:
!在这里插入图片描述

DROP TABLE IF EXISTS `tb_emp`;
CREATE TABLE `tb_emp`  (
  `empno` int(4) UNSIGNED NOT NULL,
  `ename` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `job` varchar(9) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `mgr` int(4) NULL DEFAULT NULL,
  `hiredate` date NULL DEFAULT NULL,
  `sal` decimal(7, 2) NULL DEFAULT NULL,
  `comm` decimal(7, 2) NULL DEFAULT NULL,
  `deptno` tinyint(2) UNSIGNED NULL DEFAULT NULL,
  PRIMARY KEY (`empno`) USING BTREE,
  INDEX `deptno`(`deptno`) USING BTREE,
  CONSTRAINT `tb_emp_ibfk_1` FOREIGN KEY (`deptno`) REFERENCES `tb_dept` (`deptno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `tb_emp` VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20);
INSERT INTO `tb_emp` VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30);
INSERT INTO `tb_emp` VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30);
INSERT INTO `tb_emp` VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20);
INSERT INTO `tb_emp` VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30);
INSERT INTO `tb_emp` VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30);
INSERT INTO `tb_emp` VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10);
INSERT INTO `tb_emp` VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000.00, NULL, 20);
INSERT INTO `tb_emp` VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10);
INSERT INTO `tb_emp` VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30);
INSERT INTO `tb_emp` VALUES (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100.00, NULL, 20);
INSERT INTO `tb_emp` VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30);
INSERT INTO `tb_emp` VALUES (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20);
INSERT INTO `tb_emp` VALUES (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10);

实体类:
dept代码

package com.hc;
public class Dept {
    private Integer deptno;
    private String dname;
    private String loc;
    public Dept() {
    }
    public Dept(Integer deptno, String dname, String loc) {
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
  //to_string 函数:将数字常量转换为字符串,返回值为转换完毕的字符串
    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }
}

emp 代码:

package com.hc;
import java.time.LocalDate;
public class Emp {
/*
    实体类代码:
    Integer:为了封装在这里必须用integer 不能用int
    date:2019.11.18
 */
    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private LocalDate hiredate;
    private Double sal;
    private Double comm;
    private Integer deptno;
    public Emp() { //创建默认类方法
    }
   //创建全参构造方法,
    public Emp(Integer empno, String ename, String job, Integer mgr, LocalDate hiredate, Double sal, Double comm, Integer deptno) {
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.mgr = mgr;
        this.hiredate = hiredate;
        this.sal = sal;
        this.comm = comm;
        this.deptno = deptno;
    }
/*
  getter、setter是个很好的中间层。
共同作用:1.方便增加额外功能(比如验证)
         2.保持接口不变,修改内部存储方式和逻辑
         3.提供一个debug接口
         4.封装数据,对私有属性进行封装,只是暴露public方法来访问,下面的代码就是这一作用。
         5.属性可读不可写,getter方法
  setter方法
1.可以限制和检验setter方法传入的参数
2.隐藏对象内部数据结构
3.保持对象在每个状态的完整性
  getter方法
     1.按照客户的期望返回格式化数据
     2.控制服务的顺序(例如只有当连接建立时getter方法才返回相应实例)
    其实说得明白点吧,这只是java类(特别的很多时候是一个javabean)的两个方法,以提供对某个变量(字段)设置与访问的两个入口,在很多时候也正如你说,跟定义成public是没有两样的,具体的原因在于:
   (1)由于很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
   (2)get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,
   在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。
   再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,
   这用public定义是不能作到的。
 */
    public Integer getEmpno() {
        return empno;
    }
    public void setEmpno(Integer empno) {
        this.empno = empno;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public Integer getMgr() {
        return mgr;
    }
    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }
    public LocalDate getHiredate() {
        return hiredate;
    }
    public void setHiredate(LocalDate hiredate) {
        this.hiredate = hiredate;
    }
    public Double getSal() {
        return sal;
    }
    public void setSal(Double sal) {
        this.sal = sal;
    }
    public Double getComm() {
        return comm;
    }
    public void setComm(Double comm) {
        this.comm = comm;
    }
    public Integer getDeptno() {
        return deptno;
    }
    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
    @Override
    public String toString() {
        return "Emp{" +
                "empno=" + empno +
                ", ename='" + ename + '\'' +
                ", job='" + job + '\'' +
                ", mgr=" + mgr +
                ", hiredate=" + hiredate +
                ", sal=" + sal +
                ", comm=" + comm +
                ", deptno=" + deptno +
                '}';
    }
}

DemoTest测试代码:

List depts = DB.getDepts();
Stream stream = depts.stream();
Stream stream2 = stream.map(item -> item.getDname());
stream2.forEach(System.out::println);

depts.stream()
        .map(item->item.getDeptno())
        .forEach(System.out::println);
depts.stream()
        .map(item->item.getDname())
        .forEach(System.out::println);

  Stream<? extends List<? extends Serializable>> ss1 = Stream.of(Arrays.asList("aa", "bb", "cc"), Arrays.asList(11, 22, 33));
        ss1.forEach(System.out::println);
        System.out.println("-----------");
        Stream<? extends List<? extends Serializable>> ss = Stream.of(Arrays.asList("aa", "bb", "cc"), Arrays.asList(11, 22, 33));
        Stream<? extends Serializable> ss2 = ss.flatMap(item -> item.stream());
        ss2.forEach(System.out::println);

        System.out.println("-----------");
        Stream<? extends Serializable> aa = Stream.of("aa", "bb", "cc", 1, 2, 3);
        aa.forEach(System.out::println);
--------------------------

List depts = DB.getDepts();

Stream<List<Dept>> stream1 = Stream.of(depts);
Stream<Dept> deptStream = stream1.flatMap(item -> item.stream());
deptStream.forEach(System.out::println);

Stream<Dept> stream2 = depts.stream();
stream2.forEach(System.out::println);
发布了39 篇原创文章 · 获赞 4 · 访问量 589

猜你喜欢

转载自blog.csdn.net/qq_43674360/article/details/103129230