Hibernate-ORM:07.Hibernate中的参数绑定
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
本篇博客会讲解Hibernate中的参数绑定,就是相当于sql语句中的where后面的条件
一,讲解概述:
1.通过下标的方式绑定参数
2.通过自定义参数名的方式绑定参数(多用于多表操作)
3.通过传入自定义对象的方式绑定参数(多用于单表操作)
4.通过类似智能标签的方式绑定参数(多用于带条件的多表操作)
二,通过下标的方式绑定参数
@Test
/*通过下标的方式指定参数*/
public void t01Parameterbyunderid(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
String hql="from Teacher where address=? and sal>?";
Query query = session.createQuery(hql);
/*赋值*/
query.setParameter(0,teacher.getAddress());
query.setParameter(1,teacher.getSal());
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }
三,通过自定义参数名的方式绑定参数(多用于多表操作)
@Test
/*通过自定义参数名的方式指定参数*/
public void t02Parameterbymyselfkey(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
String hql="from Teacher where address=:teaAdd and sal>:teasal";
Query query = session.createQuery(hql);
/*赋值*/
query.setParameter("teaAdd",teacher.getAddress());
query.setParameter("teasal",teacher.getSal());
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }
四,通过传入自定义对象的方式绑定参数(多用于单表操作)
@Test
/*通过自定义对象的方式指定参数*/
/*适合单表操作*/
public void t03ParameterbymyselfObject(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
String hql="from Teacher where address=:address and sal>:sal";
Query query = session.createQuery(hql);
/*赋值*/
query.setProperties(teacher);
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }
五,通过类似智能标签的方式绑定参数(多用于带条件的多表操作)
@Test
/*通过自定义参数名的方式指定动态参数*/
/*适合多表操作*/
public void t04ParameterbyDongtai(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
StringBuffer hql=new StringBuffer("from Teacher where 1=1 "); if(teacher.getAddress()!=null){
hql.append("and address=:teaAdd ");
}
if(teacher.getSal()>0){
hql.append("and sal>:teasal ");
} Query query = session.createQuery(hql.toString());
/*赋值*/
query.setParameter("teaAdd",teacher.getAddress());
query.setParameter("teasal",teacher.getSal());
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }
Hibernate-ORM:07.Hibernate中的参数绑定的更多相关文章
- MVC中Action参数绑定的过程
一.题外话 上一篇:MVC中Action的执行过程 ControllerContext 封装有了与指定的 RouteBase 和 ControllerBase 实例匹配的 HTTP 请求的信息. 二. ...
- SpringMVC中的参数绑定总结
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...
- 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...
- SpringMVC中的参数绑定
SpringMVC中的参数绑定 参数绑定的定义 所谓参数绑定,简单来说就是客户端发送请求,而请求中包含一些数据,那么这些数据怎么到达 Controller.从客户端请求key/value数据(比如ge ...
- SpringMvc中初始化参数绑定
初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法 使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型 proper ...
- ASP.NET Web API中的参数绑定总结
ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单 ...
- Hibernate 系列 07 - Hibernate中Java对象的三种状态
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...
- Hibernate的HQL语句中定位参数和具名参数传参
HQL查询: 1.有关hql查询语句中的问号参数形式,如果出现有多个问号,这对后面设置参数就比较麻烦. 如:from User user where user.name=? and user.age= ...
- 解决Spring Mvc中接受参数绑定重名的方法
html页面 <form method='post' action='url'> 用户名 <input type='text' name='name'> 用户id <in ...
随机推荐
- python接口测试-项目实践(二)获取接口响应,取值(re、json)
一 分别请求3个接口,获取响应. 第三方接口返回有两种:1 纯字符串 2 带bom头的json字串 import requests api1 = 'url1' response1 = request ...
- 二维数组展示到DataGridView(c#)
窗体程序中二维数组展示到DataGridView public void TwoDArrayShowINDatagridview(string[,] arr) { DataTable dt = new ...
- git多站点多用户情况下SSH配置
个人使用github,但是公司使用的是 GitLab .那么在一个电脑上进行处理时,由于先设置了 github 的,导致没办法从 GitLab 上处理 git .其实是由于 ssh 的问题. 下面记录 ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A、Saving Tang Monk II 【状态搜索】
任意门:http://hihocoder.com/problemset/problem/1828 Saving Tang Monk II 时间限制:1000ms 单点时限:1000ms 内存限制:25 ...
- ConcurrentMap注意事项
java.util.concurrent.ConcurrentMap接口和ConcurrentHashMap实现类 只能在键不存在时将元素加入到map中, 只有在键存在并映射到特定值时才能从map中删 ...
- 【洛谷P1983】车站分级
车站分级 题目链接 首先,可以发现火车停靠站点的大小是没有什么规律的, 火车可以停靠在级别<=当前级别的站点,必须停靠在级别>=当前最高级别的站点 但是所有没有被停靠的站点级别一定比所有被 ...
- 第10章 使用STM32CubeMX新建工程
STM32Cube是一项意法半导体的原创活动, 通过减少开发工作.时间和成本, 使开发者的开发工作更轻松.STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列.(如,STM32CubeF ...
- sql得到表中的列信息
取列全部用的 sys. 中的表 CTE:WITH name AS() 用法: sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.o ...
- 实现虚拟(Virtual)DOM
Virtual DOM算法 把一个div元素的属性打印出来,如下: 可以看到仅仅是第一层,真正DOM的元素是非常庞大的,这也是DOM加载慢的原因. 相对于DOM对象,原生的JavaScript对象处理 ...
- Webpack4 学习笔记六 多页面配置和devtool
webpack 多页配置 webpack可以配置单页应用, 也可以配置多页应用. 区别在于, 单页应用entry入口只有一个, 而多页应用入口有多个 webpack配置: const path = r ...