我是目录
-
-
- Jpa的criteriaBuilder.in 使用
- @RequestParam用法(非必填)加与不加的区别
- 关于postman测试报400/405错误
- 网页调试打断点
- Java返回一个不占内存的空对象
- Idea小技巧 之 折叠代码块(默认折叠所有ctrl+shift+/,展开所有ctrl+*)
- 防止复选框的默认操作:
- 工作中常用正则记录,只能输入英文,数字,下划线等等
- angular树状图刷新(只刷新树状图)
- AngularJS下拉列表(xf)
- AngularJS在某些情况下,不能直接用required+data-required-msg=" "的方式,直接控制必填文字提示的显示,比如input为下拉框的时候,此时就需要通过**利用id操作标签的display属性控制标签的显示或者隐藏**
- js如何给input标签添加class属性
- js里打开链接的两种方式
- Maven打jar包排除特定的类和目录
- java正则表达式判断字符串是否仅含有数字和字母
- tomcat后台运行的两种方法
- 测试用例 MockMvc的使用
- Java对象转json的三种方法
- JSON.toJSONString 空对象转化为JSON字符串,避免出现null的方法
- 获取当前时间并转换为字符串
- 为弹框设置滚动条
- with 递归查询的实现(在JPA中),用于实现同表中查询除本身及下级的方法
- List集合求差集/并集
- pgsql添加表字段、修改表名和修改字段的操作
- spring-i18n语言国际化
- Thymeleaf介绍和基本语法使用
- maven的package与install命令区别
- tomcat项目运行时,偶尔出现修改了文件(java、html、js文件),但是页面上没有改变的原因
- 为什么要使用href=”javascript:void(0);”
- java中Boolean的比较(注意比较值相等不能使用==)
- java中对象(Object)的比较
-
Jpa的criteriaBuilder.in 使用
效果相当于 where (maintainUnitId in (?,?..) )
List<Predicate> predicates = new ArrayList<>();
if(companyEntities!=null&&companyEntities.size()>0){
Path<Object> path = root.get("maintainUnitId");//定义查询的字段
CriteriaBuilder.In<Object> in = criteriaBuilder.in(path);
for (int i = 0; i <companyEntities.size() ; i++) {
in.value(companyEntities.get(i).getId());//存入值
}
predicates.add(criteriaBuilder.and(criteriaBuilder.and(in)));//存入条件集合里
}
Service实例: mc
@Override
public PageVO getGridDataByQuery(Query dsQuery) {
if (dsQuery == null) {
return null;
}
PageVO pageVO = new PageVO();
int pageSize = dsQuery.getPageForm().getPageSize();
int page = dsQuery.getPageForm().getCurrentPage();
JSONObject jsonObject = (JSONObject) dsQuery.getQueryForm().getQueryData();
String orgId = jsonObject.getString("orgId");
String name = jsonObject.getString("name");
String plateNumber = jsonObject.getString("plateNumber");
String number = jsonObject.getString("number");
String category = jsonObject.getString("category");
String model = jsonObject.getString("model");
Boolean enable = jsonObject.getBoolean("enable") == null ? false : jsonObject.getBoolean("enable");
// 获取当前登录用户所属及下级的单位ID(与本问题无关)
String userOrgId = SessionUser.getSessionOrgId();
List<String> orgIds = new ArrayList<>();
if (StringUtils.isNotBlank(userOrgId)) {
// 根据orgid递归查询所有下级单位集合(包含自己)
List<Organization> organizations = organizationRepository.findChildrenCascade(userOrgId);
if (CollectionUtils.isNotEmpty(organizations)) {
for (Organization organization : organizations) {
orgIds.add(organization.getId());
}
}
}
// 条件构造器
Specification<Vehicle> specification = (Specification<Vehicle>) (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>();
if (enable) {
if (StringUtils.isNotBlank(orgId)) {
list.add(criteriaBuilder.equal(root.get("orgNode").get("id").as(String.class), orgId));
}
}
if (StringUtils.isNotBlank(name)) {
list.add(criteriaBuilder.like(root.get("name").as(String.class), "%" + name + "%"));
}
if (StringUtils.isNotBlank(plateNumber)) {
list.add(criteriaBuilder.like(root.get("plateNumber").as(String.class), "%" + plateNumber + "%"));
}
if (StringUtils.isNotBlank(number)) {
list.add(criteriaBuilder.like(root.get("number").as(String.class), "%" + number + "%"));
}
if (StringUtils.isNotBlank(category)) {
list.add(criteriaBuilder.equal(root.get("category").as(String.class), category));
}
if (StringUtils.isNotBlank(model)) {
list.add(criteriaBuilder.like(root.get("model").as(String.class), "%" + model + "%"));
}
// 本问题重点
if (CollectionUtils.isNotEmpty(orgIds)) {
Path<Object> path = root.get("orgNode").get("id");//定义查询的字段
CriteriaBuilder.In<Object> in = criteriaBuilder.in(path);
for (int i = 0; i < orgIds.size(); i++) {
in.value(orgIds.get(i));//存入值
}
list.add(criteriaBuilder.and(criteriaBuilder.and(in)));//存入条件集合里
}
list.add(criteriaBuilder.equal(root.get("valid").as(Boolean.class), true));
Predicate[] pp = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(pp));
};
// 分页对象
Pageable pageable = PageRequest.of(page - 1, pageSize, Sort.by(Sort.Direction.ASC, "orgNode.code", "name"));
// 查询
Page<Vehicle> data = vehicleRepository.findAll(specification, pageable);
if (data != null && CollectionUtils.isNotEmpty(data.getContent())) {
List<VehicleVO> vos = new ArrayList<>();
for (Vehicle vehicle : data.getContent()) {
VehicleVO vo = this.parseVehicleVO(vehicle);
vos.add(vo);
}
pageVO.setContent(vos);
pageVO.setTotalSize((int) data.getTotalElements());
}
return pageVO;
}
@RequestParam用法(非必填)加与不加的区别
https://blog.csdn.net/u013805360/article/details/79527175
关于postman测试报400/405错误
https://www.cnblogs.com/codecheng99/p/12506771.html
网页调试打断点
https://blog.csdn.net/qiudechao1/article/details/95349834
Java返回一个不占内存的空对象
Java Collections.emptyList() 方法的使用及注意事项
https://blog.csdn.net/zhuzicc/article/details/106277658
Idea小技巧 之 折叠代码块(默认折叠所有ctrl+shift+/,展开所有ctrl+*)
(可以直接在类上右键点击,选择Folding)具体详解:https://blog.csdn.net/wxxmy/article/details/78308079
防止复选框的默认操作:
document.getElementById("myCheckbox").addEventListener("click", function(event){
event.preventDefault()
});
工作中常用正则记录,只能输入英文,数字,下划线等等
https://www.cnblogs.com/zyt-it/p/10327228.html
angular树状图刷新(只刷新树状图)
// 外部更新
function updateTreeView(item, type) {
var angularElement = $("[ng-controller='orgManager.ctrl']");
var scope = angular.element(angularElement).scope();
scope.updateTreeView(item, type);
//关键在这
scope.treeData.read();
}
$scope.treeData = new kendo.data.HierarchicalDataSource({
transport: {
read: {
type: "get",
url: DSJS.getWebRoot() + "/org/get_childrenorgs_asyn_all",
dataType: "json",
contentType: "application/json"
}
},
schema: {
model: {
hasChildren: "items"
},
data: function (res) {
if (res && res.ret == "ok") {
return res.dataStore;
} else {
return [];
}
}
},
//加载完成后执行
requestEnd: function (e) {
}
});
AngularJS下拉列表(xf)
第一种写法:
<section style="clear:both">
<label class="col-xs-2 control-label">{
{"COMMON.LABEL.TYPE"|translate}}</label>
<div class="col-xs-10">
<select kendo-drop-down-list name={
{"COMMON.LABEL.TYPE"|translate}} k-value="formInfo.type" ng-model="formInfo.type" k-data-text-field="'name'"
k-data-value-field="'dictItemCode'" k-data-source="types" k-on-select="selectType(kendoEvent)" placeholder=""></select>
</div>
</section>
注意:当使用 k-value="formInfo.type"的时候,属性初始值不能为null,可以为空,因此需要一开始赋一下空值,当然不使用这条属性也可以生成下拉框,但是可能model绑定会出错.
$scope.formInfo = {
vehicleId: "",
type: ""
};
$scope.vehicles = [];
$scope.types = window.parent.types;
// 只是赋值参考,不是正式代码,函数要在初始化的时候调用
$scope.init = function() {
$http.get(QueryUrl + id).success(function(res){
if(res.ret=="ok" && res.dataStore){
$scope.formInfo = res.dataStore;
$scope.currentVehicleId = $scope.formInfo.vehicleId;
$scope.initComboTree();
$scope.initOrgVehicle($scope.formInfo.orgId);
if($scope.formInfo){
$scope.unitName.setInitName($scope.formInfo.orgName);
}
}
}).error(function(a, b, c) {
DSJS.Alert($translate.instant("ALERT.REQUEST.EXCEPTION") + b);
});
};
第二种树状下拉框写法
<section style="clear:both">
<label class="col-xs-2 control-label required">{
{"COMMON.LABEL.DEPT"|translate}}</label>
<div class="col-xs-10">
<div id="divDefaultUnitComboTree" ds-combo-tree="unitName"
ds-model="formInfo.orgId"
ds-model-text="formInfo.orgName"
ds-data-source="defUnitTreeData"
ds-data-value-field="'id'"
ds-data-text-field="'text'"
ds-value-primitive="true"
ds-auto-close="true"
ds-on-select="selectOrg(dsEvent)"
style="width: 100%">
</div>
</div>
</section>
$scope.selectOrg = function(e) {
$scope.selectedOrg = e.dataItem;
$scope.formInfo.vehicleId = "";
$scope.initOrgVehicle(e.dataItem.id);
};
$scope.initOrgVehicle = function(orgId) {
if(orgId == undefined || orgId == "" || orgId == null){
return false;
}
$http.get(VehicleUrl + "?orgId=" + orgId).success(function (response) {
if(response.ret == "ok" && response.dataStore){
$scope.vehicles = response.dataStore;
$("#vehicle").data("kendoDropDownList").setDataSource($scope.vehicles);
if($scope.currentVehicleId){
$("#vehicle").data("kendoDropDownList").value($scope.currentVehicleId);
}
}
})
};
AngularJS在某些情况下,不能直接用required+data-required-msg=" "的方式,直接控制必填文字提示的显示,比如input为下拉框的时候,此时就需要通过利用id操作标签的display属性控制标签的显示或者隐藏
实例:
html
<div class="col-xs-6 ds-form">
<div class="org org1">
<label class="col-xs-3 org_child required">{
{"COMMON.LABEL.RESPONSIBLE.DEPT"|translate}}</label>
<div class="col-xs-9 org_child">
<div class="col-xs-12" style="position: absolute;top:-25px;padding-left:0px;display: none" title={
{dutyOrg}} ng-show="showDutyOrg">
<p style="color:#dbdbdb;overflow-x:hidden;text-overflow: ellipsis;white-space: nowrap;">{
{dutyOrg}}</p>
</div>
<div style="padding: 0px;" id="unitNameDutyOrgId" ds-combo-tree="unitNameDutyOrg" ds-model="dataStore.data.orgNodeId" ds-model-text="dataStore.data.orgName" ds-data-source="defUnitTreeDataDutyOrg" ds-data-value-field="'id'" ds-data-text-field="'text'"
ds-value-primitive="true" ds-auto-close="true" ds-on-select="dutyOrgSelect(dsEvent)" ng-disabled="disabled" required validationMessage={
{"PERSON.SELECT.ORG"|translate}}>
</div>
<!-- <span ng-show="showDutyOrgError" class="k-widget k-tooltip k-tooltip-validation k-invalid-msg" data-for={
{"RESOURCE.LABEL.RESPONSIBLE.DEPT"|translate}} style="