复合的Predicate 语句可以使用CriteriaBuilder的and, or andnot 方法构建
Specifications动态实现
条件查询
//通过id查询客户信息
@Test
public void getCustomerByName(){
Specification spec = new Specification() {
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
//1.获取比较的属性
Path
多条件查询
@Test
public void getCustomerByNameAndIndustry(){
Specification spec = new Specification() {
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
//1.获取比较的属性
Path
}
模糊查询
@Test
public void getCustomerByNameLike(){
Specification spec = new Specification() {
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
//1.查询属性
Path custName = root.get("custName");
//2.查询方式 模糊查询
Predicate predicate = criteriaBuilder.like(custName.as(String.class),"传智%");
return predicate;
}
};
List list = customerDao.findAll(spec);
for (int i = 0; i < list.size(); i++) {
System.out.println("查询到的客户信息:"+list.get(i));
}
}
模糊查询并排序
@Test
public void getCustomerBySort(){
Specification spec = new Specification() {
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
//1.查询属性
Path custName = root.get("custName");
//2.查询方式 模糊查询
Predicate predicate = criteriaBuilder.like(custName.as(String.class),"传智%");
return predicate;
}
};
//排序的属性名称
Sort sort = new Sort(Sort.Direction.DESC,"custId");
List list = customerDao.findAll(spec,sort);
for (int i = 0; i < list.size(); i++) {
System.out.println("查询到的客户信息:"+list.get(i));
}
}
注:多个条件排序
构造多个sort对象,并合并
//第一个参数,排序类型:ASC/DESC,第二个参数:按照排序的字段,可以设置多个
Sort sort = new Sort(Sort.Direction.DESC,"adminId");
Sort sort1 = new Sort(Sort.Direction.ASC,"adminUsername");
final Sort mergeSort = sort1.and(sort);
直接构造Sort对象排序
Sort sortMulti = new Sort(Sort.Direction.DESC,"adminId","adminUsername");//可多字段
模糊查询排序,并分页
@Test
public void getCustomerByPagin(){
Specification spec = new Specification() {
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
//1.查询属性
Path custName = root.get("custName");
//2.查询方式 模糊查询
Predicate predicate = criteriaBuilder.like(custName.as(String.class),"传智%");
return predicate;
}
};
//分页的属性名称
/**
* 需要两个参数
* 第一个参数:当前页(从0 开始)
* 第二个参数:每页显示的总数
*/
Pageable pageable = new PageRequest(0,2);
Page page = customerDao.findAll(predicate,pageable);
System.out.println("总记录数:"+page.getTotalElements());
System.out.println("当前页数据集合:"+page.getContent());
System.out.println("总页数:"+page.getTotalPages());
List list = page.getContent();
for (int i = 0; i < list.size(); i++) {
System.out.println("查询到的客户信息:"+list.get(i));
}
}
in查询
@Test
public void testIn(){
final Long[] ids={1l,2l};
Specification spec = new Specification() {
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder cb) {
List list = new ArrayList();
CriteriaBuilder.In in = cb.in(root.get("custId"));
for (Long id :ids) {
in.value(id);
}
return cb.and(in);
}
};
List list = customerDao.findAll(spec);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
原题链接:#136 Single Number
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:
Velocity出现的目的用于简化基于MVC的web应用开发,用于替代JSP标签技术,那么Velocity如何访问Java代码.本篇继续以Velocity三http://bit1129.iteye.com/blog/2106142中的例子为基础,
POJO
package com.tom.servlets;
public
今天看org.jboss.netty.example.http.file.HttpStaticFileServerHandler.java
可以直接往channel里面写入一个FileRegion对象,而不需要相应的encoder:
//pipeline(没有诸如“FileRegionEncoder”的handler):
public ChannelPipeline ge
Zero Clipboard的实现原理
Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flash的复制功能把传入的内容复制到剪贴板。
Zero Clipboard的安装方法
首先需要下载 Zero Clipboard的压缩包,解压后把文件夹中两个文件:ZeroClipboard.js
4.1 @Order
Spring 4.2 利用@Order控制配置类的加载顺序
4.2 演示
两个演示bean
package com.wisely.spring4_2.order;
public class Demo1Service {
}
package com.wisely.spring4_2.order;
public class