jpa查询学习实例

//模糊条件查询
@Query("select a.id from Room a where a.fullName like CONCAT('%',?1,'%')")
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
Set<Long> findIdByFullName(String name);

@Query("select a from Room a where a.name = ?1 and a.fullName like CONCAT('%',?2,'%')")
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
List<Room> findByNameAndPName(String name, String fullName);
//条件查询排序
@Query("select a from Room a where a.parentId = ?1 order by a.id")
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
List<Room> findByPidOrderName(Long pid);
//多数据更新
@Query("update GZFUser set pIdCard = ?2, holderName = ?3, type='other' where id in (?1)")
@Modifying
void updateOtherTypeByIds(Set<Long> ids, String pIdCard, String holderName);
//根据日期查询当年当月数据按照部门分组统计
@Query("select a.organization.id,count (a) from Education a where month(a.dateCreated) = month(?1) and year(a.dateCreated) = year(?1) group by a.organization.id")
List<Object[]> findHomeStateResult(String date);
//按名称分组排序
@Query("select a.name,a.spec,a.munit,sum(a.number),a.month from FireEquipment a group by a.name")
List<Object[]> findByNameAndMonth();
//删除
@Modifying
@Query("delete from OtherDocumentState where organization.id in (?1)")
int deleteIdIn(Long[] longs);

@Modifying
@Query("delete from OtherDocumentState where document.id=1")
int deleteByOtherDocumentId(Long id);
//简写方式
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
User findByUsername(String username);

@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
User findByEmail(String email);

@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
User findByUsernameAndIdIsNot(String username, Long id);

@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
User findByEmailAndIdIsNot(String username, Long id);

 

jpa左连接查询写法实例

@Query(value = "SELECT a.id,a.user_name,a.room_type,a.rent_type,b.name,b.id AS room_id,b.cell,b.floor,b.type,b.sorter  FROM gzf_room b LEFT JOIN gzf_rent_info a ON a.room_id = b.id WHERE b.parent_id = ?1", nativeQuery = true)
@QueryHints({@QueryHint(name = "org.hibernate.cacheable", value = "true")})
List<Object[]> findByRoomHome(Long id);

关于vue数字的处理(四舍五入、向上取整、向下取整)

1、向下取整的函数
Math.floor();
例如:Math.floor( 23.2222222); // 23

2、向上取整
Math.ceil();
例如: Math.ceil(23.333333); // 24

3、四舍五入
Math.round();
例如:Math.round(23.33333); // 23

4、四舍五入取n位小数,运算后得到的是字符串
().toFixed(n); // 取小数点后n位
例如:(36.36498524).toFixed(3); // 36.365

字符串转数组的几种方法和字符串的截取

一:带[]的字符串如下处理

var str="[2,34,3.4]"; 
var strNew=eval(str); 
console.log(strNew[0]+"--"+strNew[1]+"--"+strNew[2]);
//2--34--3.4

二:正常字符串如下处理

var str2="2,34,3.4";
var str2New=str2.split(",");
console.log(str2New[0]+"++"+str2New[1]+"++"+str2New[2]);
//2++34++3.4

三:带()字符串如下处理

var str="合适dsw(18701200120)";
var strNew =str.replace("(","").replace(")","");
var strNewIphone=strNew.substr(strNew.length-11);
var strNewName=strNew.substring(0,strNew.length-11);
console.log(strNewName+"---"+strNewIphone);
//合适dsw---18701200120

moment时间戳相互转换

时间:var time = new Date(); // Tue Aug 28 2018 09:16:06 GMT+0800 (中国标准时间) 
时间戳:var timestamp = Date.parse(time); // 1535419062000 (Date.parse() 默认不取毫秒,即后三位毫秒为0) 
moment转时间:moment(time).valueOf(); // 1535419062126 
moment转时间戳:moment(timestamp).format(); // 2018-08-28T09:17:42+08:00
render: (h, params) => {
              var res = moment(params.row.dateCreated).format('YYYY-MM-DD HH:mm:ss');
              return h('div', [
                h('span', {}, res)
              ])
            }

公司前后端分离框架权限控制各形式说明

一般开发的系统中包含下面三种权限控制方式,使用权限控制前需导入权限资源且定义permission变量,如下例子:

import * as permission from '../../../../utils/permission'
export default {
  data() {
    return {
      permission: permission
    }
  }
}

1. 组件及标签的现实与隐藏控制。

<i-button size="small" icon="" v-auth="permission.ZNSW_SUB" @click="openAddModel">新增</i-button>

2.列表中操作按钮通过定义指令控制按钮的显示与隐藏。

{
            title: '操作',
            align: 'center',
            width: 130,
            fixed: "right",
            render: (h, params) => {
              return h('div', [
                h('a', {
                  style: {
                    marginRight: "10px"
                  },
                  on: {
                    click: () => {
                      this.$refs.editRef.loadData(params.row.id);
                      this.editModel = true;
                    }
                  },
                  directives: [
                    {
                      name: "auth",
                      value: this.permission.ZNSW_SUB
                    }
                  ]
                }, '修改'),
                h('a', {
                  style: {
                    marginRight: "10px"
                  },
                  on: {
                    click: () => {
                      this.deleteModal = true;
                      this.deleteModel = 0;
                      this.rowIndex = params.index
                    }
                  },
                  directives: [
                    {
                      name: "auth",
                      value: this.permission.ZNSW_SUB
                    }
                  ]
                }, "删除"),
                h('a', {
                  style: {},
                  on: {
                    click: () => {
                      this.$refs.viewRef.loadData(params.row.id);
                      this.detailModal = !this.detailModal
                    }
                  }
                }, '详情'),
              ])
            }
          },

3.具体方法中可以直接通过判断实现。

if (Vue.auth(this, permission.FILE_DIR_OPTION)|| Vue.auth(this, permission.FOLDER_CREATE)) {
}
中宁水务项目定义权限资源有:
export const ZNSW_TEAM = 'znsw:team' 班组操作权限
export const ZNSW_SUB = 'znsw:sub' 子公司操作权限
可以根据实际情况把除检查外的其他录入模块进行权限控制,班组无权限录入与修改,只有子公司有录入权限。实际情况只需配置子公司权限,班组不予分配也就看不到,不用做各种情况判断,可参照教育培训修改。

JS移除数组中某一个对象。

deleteItem(item) {
  this.list2 = this.removeAaary(this.list2, item);
  this.list1.push(item);
}
addItem(item) {
  this.list2.push(item);
  this.list1 = this.removeAaary(this.list1, item);
}
removeAaary(_arr, _obj) {
  var length = _arr.length;
  for (var i = 0; i < length; i++) {
    if (_arr[i] === _obj) {
      if (i === 0) {
        _arr.shift(); //删除并返回数组的第一个元素
        return _arr;
      } else if (i === length - 1) {
        _arr.pop();  //删除并返回数组的最后一个元素
        return _arr;
      } else {
        _arr.splice(i, 1); //删除下标为i的元素
        return _arr;
      }
    }
  }
}

统计SQL编写实例

根据时间查询当前季度数据,再进行分组统计数量,SQL与JPA写法。

SELECT
  a.organization_id
FROM
  zn_safe_manager_staff a
WHERE
  QUARTER (a.date_created) = QUARTER ('2018-12-01')
GROUP BY
  a.organization_id;
@Query("select a.organization.id,a.organization.name,count (a) from Staff a where quarter(a.dateCreated) = quarter(?1) group by a.organization.id")
List<Object[]> findHomeStateResult(String date);

 

SQL例子

数据库左连接查询SQL例子:

SELECT
  shaya_bs_water_meter.id,
  shaya_bs_water_meter.`name`
FROM
  shaya_bs_water_meter
LEFT JOIN (
  SELECT DISTINCT
    shaya_bs_automatic_record.water_meter_id
  FROM
    shaya_bs_automatic_record
) b ON shaya_bs_water_meter.id = b.water_meter_id
WHERE
  shaya_bs_water_meter.if_automatic = 'automatic'

数据库分组统计

select name,sum(number) from zn_safe_manager_fire_equipment GROUP BY name;