mybatisplus查询backtime非空语句
时间: 2023-06-30 07:18:07 浏览: 43
MyBatis-Plus提供了一个`notNull`方法,可以用来查询某个字段非空的记录。以查询`backtime`字段非空的记录为例,可以使用以下代码:
```java
List<Entity> list = new QueryWrapper<Entity>()
.isNotNull("backtime")
.list();
```
其中,`Entity`代表实体类名,`isNotNull`方法用于查询非空字段,括号中的参数为字段名。使用`list()`方法可以将查询结果转化为List集合。
另外,如果想查询多个非空字段,可以使用`and()`和`isNotNull()`方法结合起来使用,例如:
```java
List<Entity> list = new QueryWrapper<Entity>()
.and(wrapper -> wrapper.isNotNull("backtime").isNotNull("name"))
.list();
```
以上代码表示查询`backtime`和`name`字段都非空的记录。
相关问题
Field 'backtime' doesn't have a default value
"Field 'backtime' doesn't have a default value"是一个数据库错误信息,它表示在插入数据时,'backtime'字段没有设置默认值,而且没有提供具体的值。这个错误通常发生在使用MySQL等数据库时。
解决这个问题的方法有两种:
1. 在插入数据时,为'backtime'字段提供一个具体的值。
2. 在数据库表结构中为'backtime'字段设置一个默认值。
如果你选择第一种方法,在插入数据时,需要为'backtime'字段提供一个具体的值。例如,可以使用当前时间作为默认值:
```
INSERT INTO your_table (backtime) VALUES (CURRENT_TIMESTAMP);
```
如果你选择第二种方法,在数据库表结构中为'backtime'字段设置一个默认值。例如,可以将默认值设置为当前时间:
```
ALTER TABLE your_table ALTER COLUMN backtime SET DEFAULT CURRENT_TIMESTAMP;
```
请注意,具体的解决方法可能因数据库类型和表结构而有所不同。建议查阅相关数据库文档或寻求数据库管理员的帮助来解决该问题。
#!/bin/bash ssql -d cibfl -U edw_user -c "select relname from pg_class where relnamespace=16596 and relkind='p'" > all_odsname.log hangshu=$[$(awk '{print NR}' all_odsname.log | tail -n1)-2] hangshu2=$[$hangshu-2] head all_odsname.log -n $hangshu | tail -n $hangshu2 > all_odsname.list while read backTime do mkdir /data1/init/$backTime while read line do echo ods_db.$line$backTime is copying ssql -d cibfl -U seabox -c "COPY ods_db.$line$backTime TO '/data1/init/$backTime/$line.txt' (delimiter '|') ;" done < all_odsname.list tar -cvPf /data1/init/$backTime.tar /data1/init/$backTime rm -rf /data1/init/$backTime echo ------------ftping-------------- ftp -i -v -n 15.8.17.6 << EOF user dw_ftp dw!123 binary lcd /data1/init/ bin put $backTime.tar bye EOF echo $backTime备份数据上传成功 完成系统时间 $(date +%Y%m%d%n%H:%M) >> backup.log rm -f /data1/init/$backTime.tar done < backuptime.txt 优化一下脚本
为了优化该脚本,可以考虑以下几点:
1. 减少文件操作次数:可以将查询结果直接存入数组中,避免频繁读取文件。例如:
```bash
# 将查询结果存入数组all_odsname中
all_odsname=($(ssql -d cibfl -U edw_user -c "select relname from pg_class where relnamespace=16596 and relkind='p'"))
# 遍历数组进行操作
for line in "${all_odsname[@]}"; do
echo ods_db.$line$backTime is copying
ssql -d cibfl -U seabox -c "COPY ods_db.$line$backTime TO '/data1/init/$backTime/$line.txt' (delimiter '|') ;"
done
```
2. 减少循环次数:可以将多个查询结果合并为一个查询语句,避免多次查询。例如:
```bash
# 将查询语句合并为一个语句
ssql -d cibfl -U seabox -c "COPY ods_db.$(echo "${all_odsname[@]}" | tr ' ' ',') TO '/data1/init/$backTime/' (delimiter '|') ;"
```
3. 优化文件传输:可以使用rsync命令代替ftp命令进行文件传输,rsync命令支持增量传输,传输速度更快。例如:
```bash
rsync -avz /data1/init/ dw_ftp@15.8.17.6:/data1/init/
```
综上所述,优化后的脚本如下:
```bash
#!/bin/bash
# 将查询结果存入数组all_odsname中
all_odsname=($(ssql -d cibfl -U edw_user -c "select relname from pg_class where relnamespace=16596 and relkind='p'"))
# 遍历backuptime.txt中的时间,并进行操作
while read backTime; do
mkdir /data1/init/$backTime
ssql -d cibfl -U seabox -c "COPY ods_db.$(echo "${all_odsname[@]}" | tr ' ' ',') TO '/data1/init/$backTime/' (delimiter '|') ;"
tar -cvPf /data1/init/$backTime.tar /data1/init/$backTime
rm -rf /data1/init/$backTime
echo ------------rsyncing--------------
rsync -avz /data1/init/ dw_ftp@15.8.17.6:/data1/init/
echo $backTime备份数据上传成功 完成系统时间 $(date +%Y%m%d%n%H:%M) >> backup.log
rm -f /data1/init/$backTime.tar
done < backuptime.txt
```