工作问题、笔记

9 篇文章 1 订阅
2 篇文章 0 订阅

目录

统计百分比,小数点后保留两位数:

layui 设置时间插件只选择年月

统计某种类型的数量,默认查询当月的数量

layui增加一行统计数据:在table render中增加 parseData 方法

点击图片,图片旋转,自定义旋转角度

mybatis 大于、小于、大于等于、小于等于

mybatis-plus 配置控制台打印执行sql

idea 配置类注释方法注释

配置springboot JdbcTemplate打印sql执行日志

接收的数据库时间格式化

springboot 去掉项目启动时的 CONDITIONS EVALUATION REPORT

java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider

java.lang.ClassNotFoundException: com.netflix.hystrix.metric.HystrixCommandCompletionStream

@Pointcut execution配置

double转int

jedis异常:jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set 

list排序:根据list对象中的属性大小排序;根据自定义顺序排序。

js 数组删除元素

Comparator 排序报 空指针异常 

@Accessors(chain=true) 链式访问

sql 判断一个表是否存在

java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags

dbeaver连接informix报错:

pg数据库报错:current transaction is aborted, commands ignored until end of transaction block


统计百分比,小数点后保留两位数:

        DecimalFormat df = new DecimalFormat("##0.00");
        
        Integer partA = 3;
        Integer all = 6;
        String parAPercent = df.format(Double.valueOf(partA.toString())/all*100)+"%";
  • layui 设置时间插件只选择年月

日期插件地址:https://www.layui.com/laydate/

layui.use(['laypage', 'layer', 'table', 'element', 'laydate','excel'], function(){
    var laypage = layui.laypage //分页
        ,table = layui.table //表格
        ,laydate = layui.laydate
        , excel = layui.excel
        , form = layui.form;

。。。。。
。。。。
。。。。。

// 将type设置为 month
    laydate.render({
        elem: '#startTime',
        type: 'month',
        max:maxDate(),
        done:function(value){
            startTime = value;
            // if(endTime){
            //     checkDate();
            // }
        }
    });
  • 统计某种类型的数量,默认查询当月的数量

StringBuffer sqlList = new StringBuffer();
        sqlList.append(" DATE_FORMAT(r.create_time,'%Y-%m-%d') AS create_times, ");
        sqlList.append(" count(*) AS total_count, ");
        sqlList.append(
                "COALESCE(sum(CASE WHEN r.order_status = 5 THEN 1 END),0) AS invalid_order,");
        sqlList.append(
                "COALESCE(sum(CASE WHEN r.order_status = 11 THEN 1 END),0) AS success_order ");
        StringBuffer sqlFrom = new StringBuffer();
        sqlFrom.append(" issue_order r");
        return new SQL() {
            {
                SELECT(sqlList.toString());
                FROM(sqlFrom.toString());
                WHERE("r.owner_code = " + userVo.getOwnerCode());
                if (ValidateUtil.isEmpty(queryVo.getPartnerId()) && ValidateUtil.isEmpty(userVo.getPartnerId())) {
                    WHERE("r.partner_id = '" + userVo.getPartnerId() + "'");
                }
                if (ValidateUtil.isNotEmpty(queryVo.getPartnerId())) {
                    WHERE("r.partner_id = '" + queryVo.getPartnerId() + "'");
                }
                Date date = new Date();
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(date);
                int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
                if (ValidateUtil.isNotEmpty(queryVo.getStartTime())) {
                    WHERE("r.create_time <= '" + queryVo.getStartTime().trim()+"-"+days+"'");
                    WHERE("r.create_time >= '" + queryVo.getStartTime().trim()+"-01"+"'");
                }
                String now = DateUtils.format(new Date(),DateUtils.YYYY_MM);
                if (ValidateUtil.isEmpty(queryVo.getStartTime())) {
                    WHERE("r.create_time <= '" + now+"-"+days+"'");
                    WHERE("r.create_time >= '" + now+"-01"+"'");
                }
                GROUP_BY("create_times");
            }
        }.toString();
  • layui增加一行统计数据:在table render中增加 parseData 方法

table.render({
        elem: '#order_list'
        ,width: 'auto'
        ,height: 'full-70'
        ,url: '/mgmt/orderStatisticsSummary' //数据接口
        ,title: '订单查询'
        ,limit:50
        ,limits:[10,20,50,100]
        ,parseData:function(res){//添加一行统计数据
            // console.log(res);
            return{
                'data': res.data.concat({
                    "activateFailedOrder":res.totalActivateFailedOrder,
                    "createTimes":"汇总",
                    "effectiveOrder":res.totalEffectiveOrder,
                    "failActivationRate":res.failActivationRate,
                    "failOrder":res.totalFailOrder,
                    "inactivatedOrder":res.totalInactivatedOrder,
                    "inactivationRate":res.inactivationRate,
                    "invalidOrder":res.totalInvalidOrder,
                    "successActivationRate":res.successActivationRate,
                    "successOrder":res.totalSuccessOrder,
                    "successRate":res.successRate,
                    "totalCount":res.total
                }),
                'message': res.message,
                'code': res.code,
                'count': res.count + 1,
                'status': res.status,
            }
        }
        ,request: {
            pageName: 'page' //页码的参数名称,默认:page
            , limitName: 'pageSize' //每页数据量的参数名,默认:limit
        }
        ,response: {
            statusName: 'code', //数据状态的字段名称,默认:code
            statusCode: '1', //成功的状态码,默认:0
            msgName: 'message', //状态信息的字段名称,默认:msg
            countName: 'count', //数据总数的字段名称,默认:count
            dataName: 'data' //数据列表的字段名称,默认:data
        }
        ,page: true //开启分页
        ,cols: [[ //表头
            {type: 'checkbox', fixed: 'left'}
            ,{field: 'sort', title: '序号',width:50, fixed: 'left', align:'center',type:'numbers'/* , totalRowText: '合计:' */}
            ,{field: 'createTimes', title: '日期', width: 200, align:'center'}
            ,{field: 'totalCount', title: '总数', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'invalidOrder', title: '无效订单', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'effectiveOrder', title: '有效订单', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'successOrder', title: '成功', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'failOrder', title: '失败', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'inactivatedOrder', title: '未开始激活', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'activateFailedOrder', title: '激活失败', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'inactivationRate', title: '未激活率', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'failActivationRate', title: '激活失败率', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'successActivationRate', title: '激活成功率', width: 120, align:'center'/* , sort: true, totalRow: true */}
            ,{field: 'successRate', title: '成功率', width: 120, align:'center'/* , sort: true, totalRow: true */}

        ]]
        ,done: function(res) {
            
            //如果是异步请求数据方式,res即为你接口返回的信息。
            if (res.status == -1) {
                window.location.href = "/route/login";
            }
        }
    });

问题分析:

form 表单的button按钮有自动提交功能,点击按钮后会自动进行后台查询

解决方法:

将button 加上  type="button"

  1. 点击按钮进入了后台能够正确返回数据,但是ajax就是没执行success : function(result) {},而是执行了error : function(result) {} ,并且执行了form表单的查询。

点击图片,图片旋转,自定义旋转角度

图片旋转演示地址:jquery跨浏览器控制图片旋转插件jQueryRotate.js

引入jar包:已加入百度云盘

<script src="path/to/jquery.min.js"></script>

<script src="path/to/jQueryRotate.js"></script>

            var value = 0;
            $("#images").rotate({
            bind:
                {
                    click: function(){
                        value +=90;
                        $(this).rotate({ animateTo:value})
                    }
                }
        });

mybatis 大于、小于、大于等于、小于等于

大于:&gt;

小于:&lt;

大于等于:  &gt;=

小于等于:&lt;=

mybatis-plus 配置控制台打印执行sql

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

idea 配置类注释方法注释

1、配置类注释

File-->Settings-->Editor-->File and code templetes  点击

模板:

/**
* @description 
* @author: chenping
* @create: ${YEAR}-${MONTH}-${DAY}
**/

2、方法注释

增加template group,取名为method

添加template

设置方法注释模板

模板:

* 
 * @Description:  $description$
 * @param: $param$ 
 * @return: $returns$ 
 * @Author: chenping
 * @Date: $date$ 
 **/

方法注释模板脚本:

groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++){if(i==0){result = params[i]}else{result+='\\n'+' * @param: ' + params[i] + ((i < params.size() - 1) ? '' : '')}}; return result", methodParameters())

配置springboot JdbcTemplate打印sql执行日志

添加logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!--显示日志-->
    <logger name="org.springframework.jdbc.core" additivity="false" level="DEBUG" >
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>


</configuration>

接收的数据库时间格式化

注意:pattern 与timezone的前后顺序

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;

springboot 去掉项目启动时的 CONDITIONS EVALUATION REPORT

解决:在application.yml 中配置

logging:
  level:
    org:
      springframework:
        boot:
          autoconfigure: error

java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider

解决:启动类导入 tkmybatis的mapperscan

import tk.mybatis.spring.annotation.MapperScan;

java.lang.ClassNotFoundException: com.netflix.hystrix.metric.HystrixCommandCompletionStream

错误场景:feign 断路器,调用服务失败报错

解决:引入jar包

<dependency>
       <groupId>com.netflix.hystrix</groupId>
       <artifactId>hystrix-javanica</artifactId>
 </dependency>

@Pointcut execution配置

//表示匹配com.cp.server.UserService中所有的公有方法
@Pointcut("execution(public * com.cp.service.UserService.*(..))") 
  
//表示匹配com.cp.controller包及其子包下的所有方法
@Pointcut("execution(* com.cp.controller..*.*(..))")
 

double转int

double a = 2.30;
int i = new Double(a).intValue();

jedis异常:jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set 

解决:密码设置为空

list排序:根据list对象中的属性大小排序;根据自定义顺序排序。

        List<Users> list = getList();

        1、根据对象中某个属性排序

        //java 7 排序
        Collections.sort(list, new Comparator<Users>(){

            @Override
            public int compare(Users map1, Users map2) {
                return map2.getAge().compareTo(map1.getAge());//按age字段降序,若是map1在前为升序
            }
        });

        //java 8 排序
        Collections.sort(list,(list1,list2) -> list1.getAge().compareTo(list2.getAge()));

        2、根据自定义顺序排序
        List<Integer> sort= Arrays.asList(6,3,4,8);

        Collections.sort(listsort,(a0,a1) -> {
            int index1 = sort.indexOf(a0.getAge());
            int index2 = sort.indexOf(a1.getAge());
            return index1-index2;
        });

js 数组删除元素

opitionArr.splice(j,1);//删除索引为j的数据

Comparator 排序报 空指针异常 

userList.sort(Comparator.comparing(User::getScore));//因为socre值有null而报错

修改为:

//正序排列

userList.sort(Comparator.comparing(User::getScore, Comparator.nullsLast(Double::compareTo)));

//倒序排列

userList.sort(Comparator.comparing(User::getScore, Comparator.nullsFirst(Double::compareTo)).reversed());

@Accessors(chain=true) 链式访问

链式访问,该注解设置chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。

@Data
@Accessors(chain=true)
public class Student {
    private Integer id;
    private String name;
    private Integer age;

    public static void main(String[] args) {
        //开启 chain=true后可以使用链式的set
        Student student = new Student().setAge(31).setName("jack");//返回对象
        System.out.println(student);
    }

}

sql 判断一个表是否存在

select count(*) from information_schema.tables where table_schema='mydatabase' and  table_name ='score';

java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags

原因:jdk版本与lombok版本不兼容

解决:

1、切换jdk版本

2、修改lombok版本

例如jdk为11,则lombok要修改为v1.18.4及以上版本,具体参考lombok版本文档

https://projectlombok.org/changelog

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
</dependency>

dbeaver连接informix报错:

informix Code-set conversion function failed due to illegal sequence or invalid value

原因可能是dbeaver的安装路径有中文,修改路径中午为英文即可。

pg数据库报错:current transaction is aborted, commands ignored until end of transaction block

pg系列的数据库 手动提交遇到错误需要把此连接的全部事务回滚,否则此连接之后的所有操作都会报错(current transaction is aborted, commands ignored until end of transaction block)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL DBA 工作笔记 PDF 是一份记录 MySQL 数据库管理员(DBA)在工作笔记的 PDF 文档。这份笔记包含了 DBA 在日常工作遇到的各种问题、解决方案、优化技巧以及其他相关的经验和知识。 这份工作笔记对于 MySQL DBA 的工作非常有价值。首先,它可以记录下 DBA 遇到的各种问题,不论是关于性能、安全性还是其他方面的问题,这对于以后的参考和解决同样问题非常有帮助。其次,笔记记录的解决方案和优化技巧可以帮助 DBA 在日常工作更好地处理数据库问题,提高数据库的性能和可靠性。此外,这份笔记还可以帮助新加入团队的 DBA 快速了解和适应工作环境,减少工作上的学习曲线。 这份工作笔记的 PDF 格式具有很多优势。首先,PDF 格式具有良好的兼容性,可以在各种操作系统和设备上进行查看和编辑。其次,PDF 格式具有良好的保密性,可以设置密码来限制访问和编辑权限,保护笔记的敏感信息不被泄露。此外,PDF 格式还具有可搜索性,可以方便地通过关键词搜索和查找特定的笔记内容。 总之,MySQL DBA 工作笔记 PDF 是一份非常有价值的工作文档,对于 MySQL DBA 在日常工作问题解决和知识积累都起到了很大的帮助作用。它不仅记录了 DBA 的经验和技术,还可以方便地分享和传递给团队的其他成员,提高整个团队的工作效率和数据库管理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值