Mysql常用处理

日期处理

时间格式化比较

  1. DATE_FORMAT(start_time,'%Y-%m-%d') = DATE_FORMAT(now(), '%Y-%m-%d')

时间戳比较,注意有些时间戳会加3个000作为后缀,需格式化处理
2. UNIX_TIMESTAMP(NOW()) <= UNIX_TIMESTAMP(exam_date)

实体字段为null设置

  1. 配置全局处理
  2. 字段注解 @TableField(updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
  3. 使用 UpdateWrapper (3.x),通过set进行null值设置,执行update(null, updateWrapper)

查询条件添加OR,后置查询条件 where xxx and xxx and( xxx OR xxx)

queryWrapper.eq("其它查询条件")
.and(
                        StringUtils.isNotEmpty(orgIds),
                        orgQueryWrapper -> orgQueryWrapper
                                .notIn(ApptExamRecord::getTrainOrgId, orgIds)
                                .or().isNull(ApptExamRecord::getTrainOrgId)
                )

xml 连表查询,多表数据查询导出

  1. 主实体加上注解 @TableField(exist=false)
  2. xml的resultMap 映射
@TableField(exist=false)
	List<TeacherOrg> orgList;
<resultMap id="BaseResultMap" type="com.kmqakj.entity.teacher.TeacherInfo">
        <id property="id" column="id" jdbcType="VARCHAR"/>
        <result property="name" column="name" jdbcType="VARCHAR" />
        <result property="idCard" column="id_card" jdbcType="VARCHAR" />
        <result property="sex" column="sex" jdbcType="TINYINT" />
        <result property="phone" column="phone" jdbcType="VARCHAR" />
        <collection property="orgList" select="queryOrg" javaType="java.util.List" ofType="com.kmqakj.entity.teacher.TeacherOrg"
            column="id">
            <id property="id" column="id" jdbcType="VARCHAR"/>
            <result property="teacherId" column="teacher_id" />
            <result property="orgId" column="org_id" />
            <result property="orgName" column="org_name" />
        </collection>
    </resultMap>

查询数据异常

  1. left join 连表查询,右表没数据,导致查询出来的数据未null,但是list会存在数据,可以替换未inner join, 或者数组去空处理

  2. 使用mysql查询的时候使用不等于或者not in等语法查询时,会导致查询字段为null的数据查询不出来,需要加一个查询条件

posted @ 2023-09-18 10:21  江湖有一青衫仗剑  阅读(40)  评论(0)    收藏  举报