使用jpa
百度是这样说的
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实 体对象持久化到数据库中
JPA 是 JCP 组织发布的 Java EE 标准之一
JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。(好高端 看不懂...)
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物......(等价物 就是差不多呗)
public List<Student> findByname(Student student){
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Student> criteriaquery = criteriaBuilder.createQuery(Student.class);
Root<Student> root = criteriaquery.from(Student.class);
criteriaquery.select(root);
Predicate predicate = criteriaBuilder.conjunction();//1=1
if(student.getName!=null){
predicate = criteriaBuilder.and(predicate,criteriaBuilder.equal(root.get("name"),student.getName));
}
criteriaquery.where(predicate);
TypedQuery<Student> typedQuery = em.createQuery(criteriaquery);
List<Student> result = typedQuery.getResultList();
}
思路:
从EntityManager获取创建 CriteriaBuilder 一个工厂对象
创建查询主语句 CriteriaQuery
from
条件 predicate
判断 所传学生名字是否为空
添加进去and条件
给个where 后面跟随条件
TypedQuery执行查询语句
.get获取返回的集合
翻译成原生的sql 就是这样滴
select * from Student where 1=1 and studentName=?
我也是从这里看到滴 别说不告诉你
http://my.oschina.net/zhaoqian/blog/133500#OSC_h1_3