通用ORM模板

数据库数据

/*
 Navicat Premium Data Transfer

 Source Server         : zzj
 Source Server Type    : MySQL
 Source Server Version : 50733
 Source Host           : localhost:3306
 Source Schema         : goods

 Target Server Type    : MySQL
 Target Server Version : 50733
 File Encoding         : 65001

 Date: 12/06/2023 20:02:14
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for books
-- ----------------------------
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books`  (
  `book_id` int(6) NOT NULL,
  `type_id` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `book_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `publisher` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `price` int(3) NULL DEFAULT NULL,
  PRIMARY KEY (`book_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of books
-- ----------------------------
INSERT INTO `books` VALUES (109101, 'BAS', '高等数学', '李方健', '清华大学出版社', 20);
INSERT INTO `books` VALUES (109104, 'BAS', '离散数学', '孙德风', '天津大学出版社', 22);
INSERT INTO `books` VALUES (109107, 'ELC', '数字电路', '刘国庆', '高等教育出版社', 13);
INSERT INTO `books` VALUES (109109, 'CMP', 'C语言程序设计', '谭浩强', '清华大学出版社', 15);
INSERT INTO `books` VALUES (109110, 'CMP', '数据结构', '王志国', '高等教育出版社', 32);
INSERT INTO `books` VALUES (109111, 'CMP', '操作系统', '王志国', '高等教育出版社', 25);
INSERT INTO `books` VALUES (109112, 'CMP', '计算机组成原理', '张小敏', '南大在学出版社', 27);
INSERT INTO `books` VALUES (109113, 'CMP', '微机原理与接口技术', '刘国庆', '人民大学出版社', 34);
INSERT INTO `books` VALUES (109114, 'CMP', '数据库原理', '彭来德', '高等教育出版社', 16);
INSERT INTO `books` VALUES (109115, 'CMP', '计算机网络', '马国露', '人民大学出版社', 11);
INSERT INTO `books` VALUES (109116, 'CMP', '计算机网络', '谭浩强', '南大在学出版社', 13);
INSERT INTO `books` VALUES (109117, 'CMP', '编译原理', '方刚', '清华大学出版社', 38);
INSERT INTO `books` VALUES (209101, 'CMP', 'VB与WINDOWS程序设计', '谭浩强', '清华大学出版社', 30);
INSERT INTO `books` VALUES (209102, 'CMP', 'C++与面向对象技术', '谭浩强', '人民大学出版社', 19);
INSERT INTO `books` VALUES (209103, 'CMP', 'Java与网络程序设计', '付勇', '高等教育出版社', 20);
INSERT INTO `books` VALUES (209106, 'CMP', '单片机原理及应用', '刘国庆', '人民大学出版社', 22);
INSERT INTO `books` VALUES (209107, 'CMP', 'PLC原理及其应用开发', '刘国庆', '南大在学出版社', 16);
INSERT INTO `books` VALUES (209111, 'CMP', '人工智能导论', '丁宝康', '高等教育出版社', 18);
INSERT INTO `books` VALUES (209116, 'CMP', '信息论与编码学概论', '丁宝康', '高等教育出版社', 21);
INSERT INTO `books` VALUES (209117, 'CMP', '密码学基础', '张顺志', '人民大学出版社', 25);
INSERT INTO `books` VALUES (209123, 'CMP', 'Internet应用及网页设计', '李朋', '高等教育出版社', 16);
INSERT INTO `books` VALUES (209124, 'CMP', '多媒体技术及应用', '谭浩强', '高等教育出版社', 15);
INSERT INTO `books` VALUES (209130, 'CMP', 'PB与数据库应用开发', '张华强', '清华大学出版社', 42);
INSERT INTO `books` VALUES (209132, 'CMP', '计算机图形学', '徐志超', '人民大学出版社', 27);
INSERT INTO `books` VALUES (309102, 'CMP', '计算机学科教学论', '丁宝康', '高等教育出版社', 12);
INSERT INTO `books` VALUES (309103, 'CMP', '中学计算机教材研究与分析', '徐志超', '人民大学出版社', 14);
INSERT INTO `books` VALUES (309104, 'CMP', '信息技术概论', '付勇', '天津大学出版社', 24);
INSERT INTO `books` VALUES (309105, 'CMP', '数据库分析与设计', '丁宝康', '人民大学出版社', 30);
INSERT INTO `books` VALUES (309106, 'CMP', '数据库导论', '付勇', '清华大学出版社', 29);

-- ----------------------------
-- Table structure for borrow_info
-- ----------------------------
DROP TABLE IF EXISTS `borrow_info`;
CREATE TABLE `borrow_info`  (
  `reader_id` int(7) NOT NULL,
  `book_id` int(6) NOT NULL,
  `borrow_time` date NULL DEFAULT NULL,
  `notes` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`reader_id`, `book_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of borrow_info
-- ----------------------------
INSERT INTO `borrow_info` VALUES (34103, 109101, '2005-06-02', 'NULL');
INSERT INTO `borrow_info` VALUES (34301, 209130, '2005-06-14', 'NULL');
INSERT INTO `borrow_info` VALUES (34301, 209132, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (34301, 309102, '2005-06-09', 'NULL');
INSERT INTO `borrow_info` VALUES (34301, 309103, '2005-06-21', 'NULL');
INSERT INTO `borrow_info` VALUES (34301, 309104, '2005-06-14', 'NULL');
INSERT INTO `borrow_info` VALUES (34429, 109107, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134101, 109101, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134101, 109109, '2005-06-03', 'NULL');
INSERT INTO `borrow_info` VALUES (134102, 109104, '2005-06-08', 'NULL');
INSERT INTO `borrow_info` VALUES (134102, 109110, '2005-06-30', 'NULL');
INSERT INTO `borrow_info` VALUES (134103, 109111, '2005-06-13', 'NULL');
INSERT INTO `borrow_info` VALUES (134104, 109107, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134104, 109112, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134105, 109109, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134105, 109113, '2005-06-14', 'NULL');
INSERT INTO `borrow_info` VALUES (134106, 109114, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134107, 109115, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134108, 109116, '2005-06-12', 'NULL');
INSERT INTO `borrow_info` VALUES (134109, 109117, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134110, 209101, '2005-06-22', 'NULL');
INSERT INTO `borrow_info` VALUES (134111, 209102, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134112, 209103, '2005-06-16', 'NULL');
INSERT INTO `borrow_info` VALUES (134113, 209106, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134114, 209107, '2005-06-11', 'NULL');
INSERT INTO `borrow_info` VALUES (134115, 209111, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134116, 209106, '2005-06-14', 'NULL');
INSERT INTO `borrow_info` VALUES (134426, 109110, '2005-06-15', 'NULL');
INSERT INTO `borrow_info` VALUES (134427, 109111, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134428, 109112, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134429, 109113, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 109114, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 209103, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 209106, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 209107, '2005-06-21', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 209111, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 209116, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134430, 209124, '2005-06-05', 'NULL');
INSERT INTO `borrow_info` VALUES (134431, 109115, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134432, 109116, '2005-06-14', 'NULL');
INSERT INTO `borrow_info` VALUES (134433, 109117, '2005-06-01', 'NULL');
INSERT INTO `borrow_info` VALUES (134434, 209101, '2005-06-02', 'NULL');
INSERT INTO `borrow_info` VALUES (134435, 209102, '2005-06-01', 'NULL');

-- ----------------------------
-- Table structure for goods_info
-- ----------------------------
DROP TABLE IF EXISTS `goods_info`;
CREATE TABLE `goods_info`  (
  `goodsid` int(11) NOT NULL AUTO_INCREMENT,
  `goodsname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `goodstype` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `goodsstore` int(11) NOT NULL,
  `goodsprice` decimal(8, 2) NOT NULL,
  PRIMARY KEY (`goodsid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of goods_info
-- ----------------------------
INSERT INTO `goods_info` VALUES (1, '佳洁士', '牙膏', 66, 300.00);
INSERT INTO `goods_info` VALUES (2, '舒肤佳', '香皂', 4, 500.00);
INSERT INTO `goods_info` VALUES (3, 'Dell', '电脑', 900, 98.00);
INSERT INTO `goods_info` VALUES (4, '小天鹅', '洗衣机', 800, 96.00);

-- ----------------------------
-- Table structure for readers
-- ----------------------------
DROP TABLE IF EXISTS `readers`;
CREATE TABLE `readers`  (
  `reader_id` int(7) NOT NULL,
  `name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '男',
  `dept` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `status` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `address` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`reader_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of readers
-- ----------------------------
INSERT INTO `readers` VALUES (34103, '范元帅', '男', '艺术学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (34301, '杨凡', '男', '电信学院', '教师', '八里台禄小区');
INSERT INTO `readers` VALUES (34429, '许丹丹', '女', '艺术学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134101, '陈超', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134102, '范金良', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134103, '国皓', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134104, '贺云龙', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134105, '刘德文', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134106, '彭俊', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134107, '彭志成', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134108, '沈举', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134109, '田强', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134110, '王旭', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134111, '吴卫', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134112, '熊敏', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134113, '颜东', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134114, '殷建鹏', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134115, '周春林', '男', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134116, '陈洁', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134117, '陈琪', '女', '计算机学院', '研究生', '师大南院');
INSERT INTO `readers` VALUES (134118, '丁璐', '女', '计算机学院', '研究生', '师大南院');
INSERT INTO `readers` VALUES (134119, '丁岩', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134120, '董蕾', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134121, '何芳', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134122, '蒋莎', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134123, '李颖', '女', '计算机学院', '研究生', '师大南院');
INSERT INTO `readers` VALUES (134124, '李芬', '女', '计算机学院', '研究生', '师大南院');
INSERT INTO `readers` VALUES (134125, '李锦萍', '女', '计算机学院', '教授', '师大南院');
INSERT INTO `readers` VALUES (134126, '李小汐', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134127, '李玥玖', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134128, '郦莎', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134129, '廖英', '女', '计算机学院', '本科生', '师大南院');
INSERT INTO `readers` VALUES (134130, '林琳', '女', '计算机学院', '教师', '师大南院');
INSERT INTO `readers` VALUES (134131, '林敏', '女', '计算机学院', '本科生', '师大南院');

-- ----------------------------
-- Table structure for tbl_class
-- ----------------------------
DROP TABLE IF EXISTS `tbl_class`;
CREATE TABLE `tbl_class`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tbl_class
-- ----------------------------
INSERT INTO `tbl_class` VALUES (1, '小班');
INSERT INTO `tbl_class` VALUES (2, '中班');
INSERT INTO `tbl_class` VALUES (3, '大班');

-- ----------------------------
-- Table structure for tbl_dept
-- ----------------------------
DROP TABLE IF EXISTS `tbl_dept`;
CREATE TABLE `tbl_dept`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `loc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of tbl_dept
-- ----------------------------
INSERT INTO `tbl_dept` VALUES (1, '研发部', '郑州');
INSERT INTO `tbl_dept` VALUES (2, '市场部', '北京');
INSERT INTO `tbl_dept` VALUES (3, '财务部', '成都');
INSERT INTO `tbl_dept` VALUES (4, '人事部', '杭州');
INSERT INTO `tbl_dept` VALUES (6, '商务部', '重庆');
INSERT INTO `tbl_dept` VALUES (12, '商务部', '青岛');
INSERT INTO `tbl_dept` VALUES (13, '商务部', '青岛');
INSERT INTO `tbl_dept` VALUES (14, '商务部', '青岛');

-- ----------------------------
-- Table structure for tbl_emp
-- ----------------------------
DROP TABLE IF EXISTS `tbl_emp`;
CREATE TABLE `tbl_emp`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `salary` double(10, 2) NULL DEFAULT NULL COMMENT '薪水',
  `birthday` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '出生日期',
  `dept_id` int(11) NULL DEFAULT NULL COMMENT '部门id 关联部门表',
  `headImg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of tbl_emp
-- ----------------------------
INSERT INTO `tbl_emp` VALUES (1, '刘德华', 2500.00, '2000-10-11', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (2, '张学友', 3200.00, '2001-11-15', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/05.jpg');
INSERT INTO `tbl_emp` VALUES (3, '黎明', 2800.00, '2002-12-12', 4, '\r\n\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/09.jpg');
INSERT INTO `tbl_emp` VALUES (4, '郭富城', 5000.00, '2008-11-12', 3, '\r\n\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/09.jpg');
INSERT INTO `tbl_emp` VALUES (5, '张振嘉', 50000.00, '2010-12-12', 1, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (6, '谷歌', 122.00, '2023-05-01', 2, '\r\n\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/09.jpg');
INSERT INTO `tbl_emp` VALUES (7, '冻干粉', 12345.00, '2023-05-15', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (8, '是多少', 1230.22, '2023-05-15', 3, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (9, '艾尔登', 123.00, '2023-05-08', 1, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (10, '第三方', 145.02, '2023-05-04', 3, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (11, '东方闪电', 1548.23, '2023-05-15', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (12, '挖地方', 145.20, '2023-05-15', 4, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (13, '山东人', 165.23, '2023-05-11', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (14, '色彩上午', 15.65, '2023-05-10', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (15, '课骨干', 156.23, '2023-05-15', 2, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (16, '问题吧', 153.20, '2023-05-02', 3, '\r\nhttps://aaamain.oss-cn-beijing.aliyuncs.com/01.jpg');
INSERT INTO `tbl_emp` VALUES (19, '发发发', 888.80, '2023-05-15', 3, 'https://aaamain.oss-cn-beijing.aliyuncs.com/33f9dab9-e5d8-4171-b0c2-dcadcb43323104.jpg');
INSERT INTO `tbl_emp` VALUES (20, 'AAA', 150.56, '2023-05-08', 2, 'https://aaamain.oss-cn-beijing.aliyuncs.com/d0e5d586-9903-4fed-9652-0ac90b6add6f00.jpg');
INSERT INTO `tbl_emp` VALUES (21, '儿童', 12345.00, '2023-05-08', 3, 'https://aaamain.oss-cn-beijing.aliyuncs.com/75ef686b-7df1-4b8d-b6b9-99cd126c53b101.jpg');
INSERT INTO `tbl_emp` VALUES (22, '规划局', 12312.00, '2023-05-15', 2, 'https://aaamain.oss-cn-beijing.aliyuncs.com/35.jpg');
INSERT INTO `tbl_emp` VALUES (23, 'aaaa', 12345.00, '2023-05-15', 3, 'https://aaamain.oss-cn-beijing.aliyuncs.com/953d21ed-82e5-474e-9142-8486d743544210.jpg');

-- ----------------------------
-- Table structure for tbl_student
-- ----------------------------
DROP TABLE IF EXISTS `tbl_student`;
CREATE TABLE `tbl_student`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL,
  `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `class_id` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `class_id`(`class_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tbl_student
-- ----------------------------
INSERT INTO `tbl_student` VALUES (1, '输入', 18, '男', 2);
INSERT INTO `tbl_student` VALUES (2, '二手', 20, '女', 3);
INSERT INTO `tbl_student` VALUES (3, '泰国', 18, '男', 3);
INSERT INTO `tbl_student` VALUES (4, '示范', 18, '男', 2);
INSERT INTO `tbl_student` VALUES (5, '覆盖', 19, '女', 1);
INSERT INTO `tbl_student` VALUES (6, '幅度', 20, '女', 1);
INSERT INTO `tbl_student` VALUES (14, '干饭', 18, '女', 2);
INSERT INTO `tbl_student` VALUES (15, '干饭', 20, '女', 1);

SET FOREIGN_KEY_CHECKS = 1;

引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>day01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
    </dependencies>


</project>

引入db.properties

jdbc.driverName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/goods?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=123456

定义实体类

package com.aaa.pojo;

import com.aaa.annotation.TableField;
import com.aaa.annotation.TableId;
import com.aaa.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * @ClassName: Dept
 * @Description: TODO
 * @date: 2023/6/12 17:32
 * @author: zzj
 * @Version: 1.0
 */

@TableName(value = "tbl_dept")
public class Dept {
    @TableId
    private int id;
    @TableField(value = "name")
    private String name;
    private String loc;

    @Override
    public String toString() {
        return "Dept{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLoc() {
        return loc;
    }

    public void setLoc(String loc) {
        this.loc = loc;
    }
}
package com.aaa.pojo;

import com.aaa.annotation.TableField;
import com.aaa.annotation.TableId;
import com.aaa.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * @ClassName: Emp
 * @Description: TODO
 * @date: 2023/6/12 17:32
 * @author: zzj
 * @Version: 1.0
 */
@TableName(value = "tbl_emp")
public class Emp {
    @TableId
    private int id;
    private String name;
    private double salary;
    private String birthday;
    @TableField(value = "dept_id")
    private int deptId;
    private String headImg;

    @Override
    public String toString() {
        return "Emp{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                ", birthday='" + birthday + '\'' +
                ", deptId=" + deptId +
                ", headImg='" + headImg + '\'' +
                '}';
    }

    public Emp() {
    }

    public Emp(int id, String name, double salary, String birthday, int deptId, String headImg) {
        this.id = id;
        this.name = name;
        this.salary = salary;
        this.birthday = birthday;
        this.deptId = deptId;
        this.headImg = headImg;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public int getDeptId() {
        return deptId;
    }

    public void setDeptId(int deptId) {
        this.deptId = deptId;
    }

    public String getHeadImg() {
        return headImg;
    }

    public void setHeadImg(String headImg) {
        this.headImg = headImg;
    }
}

定义util下DBUtil

package com.aaa.util;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @ClassName: DBUtil
 * @Description: TODO
 * @date: 2023/6/12 9:00
 * @author: zzj
 * @Version: 1.0
 */
public class DBUtil {

    private static String driverName="";
    private static String url="";
    private static String username="";
    private static String password="";

    static {
        try {
            /**
             * ClassLoader.getSystemResourceAsStream
             * 该方法通过读取,从而从 加载类搜索路径中指定名称的资源
             * 简单来说 读取db.properties 文件,并加载出来
             */

            InputStream inputStream = ClassLoader.getSystemResourceAsStream("db.properties");
            /**
             * 创建 Properties 读取java配置文件
             */
            Properties properties = new Properties();
            // properties.load 读取文件的属性
            properties.load(inputStream);
            // properties.getProperty 方法将搜索此属性列表中指定键的属性值.
            driverName = properties.getProperty("jdbc.driverName");
            url = properties.getProperty("jdbc.url");
            username = properties.getProperty("jdbc.username");
            password = properties.getProperty("jdbc.password");
        } catch(Exception e){
            System.out.println("文件不存在");
            e.printStackTrace();
        }
    }


    /**
     * Connection主要用于执行对象的获取从而进一步执行SQL,这是应用程序与数据库交互的主要途径
     * @return Connection
     * @throws Exception
     * 此方法是 获取连接对象
     */
    public static Connection getConnection() throws Exception{
        // Class.forName 方法的作用,就是初始化给定的类。
        //而我们给定的 MySQL 的 Driver 类中,它在静态代码块中通过 JDBC 的 DriverManager 注册了一下驱动。
        Class.forName(driverName);
        // DriverManager.getConnection() 该方法用于获取建立到指定数据库url的连接 从已注册的JDBC驱动程序集中选择一个适合的驱动程序
        Connection connection = DriverManager.getConnection(url,username,password);
        return connection;
    }

    // 关闭资源

    /**
     *
     * @param connection
     * Connection 主要用于执行对象的获取 从而进一步执行sql语句 这是应用程序与数据库交互的主要途径
     * @param ps
     * PreparedStatement 主要用于预编译处理,对于批量处理可以大大提高效率 也叫jdbc存储过程
     * @param rs
     * ResultSet 是数据库中查询的结果返回的一种对象 是存储查询结果的对象
     * 结果集不仅仅具有存储的功能,还能完成对数据的更新
     */
    public static void closeAll(Connection connection, PreparedStatement ps, ResultSet rs){
        try{
            if (rs != null){
                rs.close();
            }

            if (ps != null){
                ps.close();
            }

            if (connection !=null){
                connection.close();
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

定义dao层 BaseDao

package com.aaa.dao;

import com.aaa.annotation.TableField;
import com.aaa.annotation.TableId;
import com.aaa.annotation.TableName;
import com.aaa.util.DbUtil;

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * @program: qy165-orm
 * @description:
 * @author: zzj
 * @create: 2023-06-12 09:22
 **/
public class BaseDao<T> {

    Class<T> clazz;
    public BaseDao(){
        //获取BaseDao子类的反射类对象
        Class<? extends BaseDao> aClass = this.getClass();
        //获取当前Dao子类的父类的反射类
        ParameterizedType parameterizedType= (ParameterizedType) aClass.getGenericSuperclass();
        //得到泛型的反射类
        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
        clazz= (Class<T>) actualTypeArguments[0];
    }

    //根据主键查询一条记录
    //sql: select * from 表名 where 主键=值;
    public T selectById(Object id) throws Exception{
        StringBuffer sql=new StringBuffer("select * from ");
        TableName annotation = clazz.getAnnotation(TableName.class);
        String tableName=clazz.getSimpleName();
        if(annotation!=null){
             tableName=annotation.value();
        }
        sql.append(tableName+" where ");
        Field[] fields = clazz.getDeclaredFields();
        for(Field field:fields){
            TableId tableId = field.getAnnotation(TableId.class);
            if(tableId!=null){
                sql.append(tableId.value()+"='"+id+"'");
                continue;
            }
        }
        //执行sql语句
        Connection connection = DbUtil.getConnection();
        PreparedStatement ps=connection.prepareStatement(sql.toString());
        ResultSet rs = ps.executeQuery();
        T t =null;
        while (rs.next()){
            t= clazz.newInstance();
            Field[] declaredFields = clazz.getDeclaredFields();
            for(Field field:declaredFields){
                field.setAccessible(true);
                String name = field.getName();
                TableField tableField = field.getAnnotation(TableField.class);
                TableId tableId = field.getAnnotation(TableId.class);
                if(tableField!=null){
                    name=tableField.value();
                }
                if(tableId!=null){
                    name=tableId.value();
                }
                Object v = rs.getObject(name);
                field.set(t,v);
            }
        }
        return t;

    }

    //通用的删除
    // sql: delete from 表名 where 主键=值
    public int delete(Object id) throws  Exception{
        StringBuffer sql=new StringBuffer("delete from ");
        TableName annotation = clazz.getAnnotation(TableName.class);
        String tableName=clazz.getSimpleName();
        if(annotation!=null){
            tableName=annotation.value();
        }
        sql.append(tableName+" where ");
        Field[] fields = clazz.getDeclaredFields();
        for(Field field:fields){
            TableId tableId = field.getAnnotation(TableId.class);
            if(tableId!=null){
                 sql.append(tableId.value()+"='"+id+"'");
                 continue;
            }
        }

        //执行sql
        Connection connection = DbUtil.getConnection();
        PreparedStatement ps=connection.prepareStatement(sql.toString());
        int i = ps.executeUpdate();
        return i;

    }

    //通用的添加操作.
    //通用的添加sql语句: insert into 表名(列名,列名....) values(值,值.....)
    public int insert(T t) throws Exception{
        StringBuffer sql=new StringBuffer("insert into ");
        //根据对象获取Class反射类。
        Class<?> aClass = t.getClass();
        //获取反射类上的注解对象
        TableName annotation = aClass.getAnnotation(TableName.class);
        //表名
        String tableName=aClass.getSimpleName();
        if(annotation!=null){
             tableName=annotation.value();
        }
        sql.append(tableName);
        //获取列名
        Field[] declaredFields = aClass.getDeclaredFields();
        //列名
        List<String> columns=new ArrayList<String>();
        List<String> values=new ArrayList<String>();
        for(Field field:declaredFields){
            String name = field.getName();//属性名
            TableId annotation2 = field.getAnnotation(TableId.class);
            if(annotation2!=null||name.equals("id")){
                continue;
            }
            TableField annotation1 = field.getAnnotation(TableField.class);
            if(annotation1!=null){
                name=annotation1.value();
            }
            field.setAccessible(true);
            Object o = field.get(t);
            columns.add(name);
            values.add("'"+o+"'");//id name loc values(‘1’,'研发','背景')
        }
       String columnNames= columns.toString().replace("[","(").replace("]",")");
       String columnValues= values.toString().replace("[","(").replace("]",")");
       sql.append(columnNames);
       sql.append(" values ");
       sql.append(columnValues);
       //执行sql
        Connection connection = DbUtil.getConnection();
        PreparedStatement ps=connection.prepareStatement(sql.toString());
        int i = ps.executeUpdate();
        return i;
    }


    //修改方法
    // sql: update 表名  set 列名=值,列名=值.... where 主键名=值;
    public int update(T t) throws Exception{
        StringBuffer sql=new StringBuffer("update ");
        //获取实体类的反射类
        Class<?> aClass = t.getClass();
        //获取反射类上指定的注解对象
        TableName annotation = aClass.getAnnotation(TableName.class);
        String tableName=aClass.getSimpleName();
        if(annotation!=null){
             tableName=annotation.value();
        }
        sql.append(tableName+" set ");
        //获取所有的Field。
        Field[] declaredFields = aClass.getDeclaredFields();
        String where=" where ";
        for(Field field:declaredFields){
            field.setAccessible(true);
            String name = field.getName();
            TableId tableId = field.getAnnotation(TableId.class);
            if(name.equals("id")){
                where =where +" id='"+field.get(t)+"'";
                continue;
            }
            if(tableId!=null){
                where =where + tableId.value()+" '"+field.get(t)+"'";
                continue;
            }
            TableField tableField = field.getAnnotation(TableField.class);
            if(tableField!=null){
                name=tableField.value();
            }

            String value="'"+field.get(t)+"'";
            sql.append(name+"="+value+",");
        }
        String sql2=sql.toString().substring(0,sql.length()-1)+where;

        //执行sql
        Connection connection = DbUtil.getConnection();
        PreparedStatement ps=connection.prepareStatement(sql2);
        int i = ps.executeUpdate();
        return i;

    }
}

 定义 DeptDao

package com.aaa.dao;

import com.aaa.pojo.Dept;

/**
 * @ClassName: DeptDao
 * @Description: TODO
 * @date: 2023/6/12 18:34
 * @author: zzj
 * @Version: 1.0
 */
public class DeptDao extends BaseDao< Dept >{
}

定义EmpDao

package com.aaa.dao;

import com.aaa.pojo.Emp;

/**
 * @ClassName: EmpDao
 * @Description: TODO
 * @date: 2023/6/12 18:35
 * @author: zzj
 * @Version: 1.0
 */
public class EmpDao extends BaseDao< Emp >{
}

 自定义注解

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TableField {
    String value();
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TableId {
    String value() default "id";
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface TableName { //再实体类标记对应的表名
    String value();
}

实现类

package com.aaa;

import com.aaa.dao.DeptDao;
import com.aaa.pojo.Dept;

/**
 * @ClassName: Test
 * @Description: TODO
 * @date: 2023/6/12 18:23
 * @author: zzj
 * @Version: 1.0
 */
public class Test {

    public static void main(String[] args) throws Exception{
        // 查询
        /*DeptDao deptDao=new DeptDao();
        System.out.println(deptDao);
        System.out.println(deptDao.selectById(2));*/
        // 修改
        /*Dept dept = new Dept();
        DeptDao deptDao=new DeptDao();
        dept.setName("财务部");
        dept.setLoc("成都");
        dept.setId(3);

        deptDao.update(dept);*/

        // 添加
        /*Dept dept = new Dept();
        DeptDao deptDao=new DeptDao();
        dept.setId(7);
        dept.setName("商务部");
        dept.setLoc("青岛");
        deptDao.insert(dept);*/

        // 删除
        DeptDao deptDao = new DeptDao();
        deptDao.delete(15);
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值