hibernate4中使用createSQLQuery方法执行sql语句的用法

时间:2021-11-01 21:25:37

下班了,公司人都走了,还好这是一个不加班的公司,比上一家公司好多了,能学得东西也多了,唯一不好的就是老板太抠,工资太少,没奖金,等等,等,不过这些都是小事。哥是来学技术的,到时候学到手了,不愿意留人我就得走了。梦想是要进大公司的。

写文章相当于做每天的笔记吧,家里电脑也烂了。写不了,就在公司写写。

一.今天使用Hibernate要用sql语句进行查询。所以想到用createSQLQuery方法

StringBuffer sql = new StringBuffer();
sql.append("select * ");
sql.append(" from vms_segmentdata t ");
sql.append(" where t.detectiontime between to_date(?, 'yyyy-MM-dd hh24:mi:ss') and ");
sql.append(" to_date(?, 'yyyy-MM-dd hh24:mi:ss') ");
sql.append(" and t.linkid like 'FBD_EH_S____' ");
Session session = getHisSession();
@SuppressWarnings("unchecked")
List<VmsSegmentData> segmentDatas = (session
.createSQLQuery(sql.toString()).addEntity(VmsSegmentData.class)
.setString(0, startHour).setString(1, endHour)).list();
1. setString()方法是动态绑定,给问号赋值。 记住是从0开始,我写的时候犯了错误。

2.addEntity表明你要返回的list是什么类型的。默认返回list.;

3.如果想只返回某几列可以这样做:

StringBuffer sql = new StringBuffer();
sql.append("select * ");
sql.append(" from vms_segmentdata t ");
sql.append(" where t.detectiontime between to_date(?, 'yyyy-MM-dd hh24:mi:ss') and ");
sql.append(" to_date(?, 'yyyy-MM-dd hh24:mi:ss') ");
sql.append(" and t.linkid like 'FBD_EH_S____' ");
Session session = getHisSession();
@SuppressWarnings("unchecked")
List<VmsSegmentData> segmentDatas = (session
.createSQLQuery(sql.toString())
.addScalar("detectiontime", DateType.INSTANCE)
.addScalar("vol",IntegerType.INSTANCE)
.addScalar("linkid", StringType.INSTANCE)
.addScalar("speed", IntegerType.INSTANCE)
.setString(0, startHour).setString(1, endHour)).list();

1.addScalar的方法就是你要指定返回的列,第1个参数是要返回的列,第二个参数是类型,但是在select 的时候还是指定"*"号,查询所有但是也只返回指定的列。

总结:不全以后用到再来总结,一下从别人那搬过来也记不住,做过才是理解最深的.

二.关于spring项目项目启动时就初始化类得三种方式:

1.通过实现InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法;

2.通过<bean> 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法;

3.在指定方法上加上@PostConstruct或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调用。

三:关于FASTJSON注解的使用

1.比如我想在实体转json字符串的时候不用实体的某个名字,使用另外一个名字,那么我就可以使用JSONFIELD(name="别名"),实例化出来之后就是你想要的名字了。hibernate4中使用createSQLQuery方法执行sql语句的用法

@JSONField(name="laneNo")
/*     */   private int laneID;

2..如果你想指定某个实体里面的某些属性不参加转化hibernate4中使用createSQLQuery方法执行sql语句的用法

可以使用这个注解。@JSONField(serialize=false)
/*     */   private String direction;

四.关于初始化类在启动的时候实例了两次,我的原因是在web.xml文件中实例化了两次spring的配置文件导致的。

1.这就是今天的收获吧,写的不好,也有点赶时间。就当一个日记吧,希望在这条路上走的越来越好,也希望和我的女朋友关系变好。就这样,祝大家工作愉快,注意身体!