快速在数据库添加一年的日期,区分休息日和工作日

该博客介绍了如何使用Java创建数据库表并填充一年的日期数据,同时区分工作日和休息日。通过Java代码示例展示了如何构建实体类、Mapper语句以及测试用例,实现快速在数据库中插入365天的日期,其中0表示工作日,1表示休息日。测试代码展示了如何从指定日期开始,循环添加日期,并根据日期判断是否为周末从而设置db_status字段。
摘要由CSDN通过智能技术生成

快速在数据库添加一年的日期,区分休息日和工作日

- 1.数据库

  • 建表
CREATE TABLE `year_date_all` (
  `repDate` date DEFAULT NULL,
  `repYear` int(8) DEFAULT NULL,
  `repMonth` int(8) DEFAULT NULL,
  `repDay` int(8) DEFAULT NULL,
  `repWeek` int(8) DEFAULT NULL,
  `db_status` int(8) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

- 2.Java代码

  1. 实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Holiday {
    private Date repDate;
    private int repYear;// 年
    private int repMonth;// 月
    private int repDay;// 日
    private int repWeek;// 第几周
    private int dbStatus;// 0 工作日 1休息日  2 法定假期
}
  1. mapper语句
    <insert id="insertHoliday" parameterType="List">
        insert into year_date_all (repDate,repYear,repMonth,repDay,repWeek,db_status)
        values
        <foreach collection="holidays" item="holiday" separator=",">
            (#{holiday.repDate},#{holiday.repYear},#{holiday.repMonth},#{holiday.repDay},#{holiday.repWeek},#{holiday.dbStatus})
        </foreach>
    </insert>
  1. 测试代码
@Test
    void insertHoliday(){
        // 设置初始时间
        LocalDate dateOfBirth = LocalDate.of(2021, 12, 31);
        ArrayList<Holiday> holidays = new ArrayList<>();
        // 当前为第几周
        int w = 2;
        // 2020  366天
        // 循环  添加接下来一年的时间
        for(int i = 1;i<= 365 ; i++) {
            Period of = Period.of(0, 0, i);
            LocalDate DateTime = dateOfBirth.plus(of);
            // 获取年份
            int Year = DateTime.getYear();
            // 获取月份
            int Month = DateTime.getMonthValue();
            // 获取日分
            int day = DateTime.getDayOfMonth();
            // 获取周
            String Week = DateTime.getDayOfWeek().toString();
            // 默认0  当为休息日时 1
            int temp = 0;
            // 日期实体类
            Holiday holiday = new Holiday();
            holiday.setRepDate(Date.from(DateTime.atStartOfDay(ZoneOffset.ofHours(8)).toInstant()));
            holiday.setRepYear(Year);
            holiday.setRepMonth(Month);
            holiday.setRepDay(day);
            holiday.setRepWeek((int)(w/2));
            // 记录  周六周日
            if( Week.equals("SATURDAY") || Week.equals("SUNDAY")) {
                temp = 1;
                w++;
            }
            holiday.setDbStatus(temp);
            holidays.add(holiday);
        }
        int i = tablesMapper.insertHoliday(holidays);
        if( i > 0 ) {
            System.out.println("添加成功,添加了"+i+"条!");
        } else {
            System.out.println("添加失败!");
        }
    }

结果展示:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值