hibernate4中使用createSQLQuery方法執行sql語句的用法
下班了,公司人都走了,還好這是一個不加班的公司,比上一家公司好多了,能學得東西也多了,唯一不好的就是老闆太摳,工資太少,沒獎金,等等,等,不過這些都是小事。哥是來學技術的,到時候學到手了,不願意留人我就得走了。夢想是要進大公司的。
寫文章相當於做每天的筆記吧,家裡電腦也爛了。寫不了,就在公司寫寫。
一.今天使用Hibernate要用sql語句進行查詢。所以想到用createSQLQuery方法
1.setString()方法是動態繫結,給問號賦值。 記住是從0開始,我寫的時候犯了錯誤。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();
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="別名"),例項化出來之後就是你想要的名字了。
@JSONField(name="laneNo")
/* */ private int laneID;
2..如果你想指定某個實體裡面的某些屬性不參加轉化
可以使用這個註解。@JSONField(serialize=false)
/* */ private String direction;
四.關於初始化類在啟動的時候例項了兩次,我的原因是在web.xml檔案中例項化了兩次spring的配置檔案導致的。
1.這就是今天的收穫吧,寫的不好,也有點趕時間。就當一個日記吧,希望在這條路上走的越來越好,也希望和我的女朋友關係變好。就這樣,祝大家工作愉快,注意身體!