hibernate4对sql语句的一些基本操作

1.首先我们要明确,hibernate4与之前的版本的开发没有本质区别,但是对于开发者来说,hibernate4利用的是最底层的开发方法,没有再继承hibernateDaoSupport。

2.hibernate4可以兼容spring,springMVC架构,而且最重要的是不需要再把每一个实体类配置一个hbl.xml配置文件。

3.没有配置文件,那多表查询如何进行呢,需不需要进行多表关联查询?我实践的是完全没问题,不需要任何配置,执行原生态的sql就能实现你自己想要的功能,下面看一下我对多表的一些处理。仅供参考,如有错误,请留言想告。


为了方便简洁,只来dao的实现类的操作:


@Repository("friendCircleDao")
public class FriendCircleDaoImpl implements FriendCircleDao {
	@Autowired
	@Qualifier("sessionFactory")
<span style="white-space:pre">	</span>private SessionFactory sessionFactory;
<span style="white-space:pre">	</span>首先是注入<span style="font-family: 'Microsoft YaHei', SimHei, arial;">sessionFactory,然后我们来操作多表条件查询</span>
<span style="font-family:Microsoft YaHei, SimHei, arial;">public List<FilterModel> getAllfriend(int pn, int pageSize,String yonghuming, String shoujihao, String begintime
<span style="white-space:pre">			</span>String lasttime) {</span>
<span style="font-family:Microsoft YaHei, SimHei, arial;">//sql语句,只要能在数据库的视图工具里面执行就没问题
String hql="select user.yonghuming,user.shoujihao,userdescripe.time,userdescripe.neirong,userdescripe.coords "
<span style="white-space:pre">		</span>+"from userdescripe left join user on userdescripe.userId=user.id WHERE 1=1";
<span style="white-space:pre">		</span>if(!"".equals(yonghuming)&&yonghuming!=null){
<span style="white-space:pre">			</span>hql+=" and user.yonghuming like '%"+yonghuming+"%'";
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>if(!"".equals(shoujihao)&&shoujihao!=null){
<span style="white-space:pre">			</span>hql+=" and user.shoujihao like '%"+shoujihao+"%'";
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>if(!"".equals(begintime)&&begintime!=null){
<span style="white-space:pre">			</span>hql+=" and userdescripe.time >= '"+begintime+"'";
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>if(!"".equals(lasttime)&&lasttime!=null){
<span style="white-space:pre">			</span>hql+=" and userdescripe.time <= '"+lasttime+"'";
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>hql+=" ORDER BY time desc";
<span style="white-space:pre">		</span>Query query = sessionFactory.getCurrentSession().createSQLQuery(hql);
<span style="white-space:pre">		</span>if (pn > -1 && pageSize > -1) {
<span style="white-space:pre">			</span>query.setMaxResults(pageSize);
<span style="white-space:pre">			</span>int start = PageUtil.getPageStart(pn, pageSize);
<span style="white-space:pre">			</span>if (start != 0) {
<span style="white-space:pre">				</span>query.setFirstResult(start);
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>if (pn < 0) {
<span style="white-space:pre">			</span>query.setFirstResult(0);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>List list =  query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP).list();
<span style="white-space:pre">		</span>return list;
<span style="white-space:pre">	</span>}</span>
<span style="font-family:Microsoft YaHei, SimHei, arial;">接下来进行多表删除,</span>
<span style="font-family:Microsoft YaHei, SimHei, arial;">@Override
<span style="white-space:pre">	</span>public void deleteFriend(String id) {
<span style="white-space:pre">		</span>String hql="DELETE userdescripe,reply  FROM userdescripe,reply WHERE userdescripe.id=reply.friendUuid   AND userdescripe.userId='"+id+"'";
<span style="white-space:pre">		</span>Query query=sessionFactory.getCurrentSession().createSQLQuery(hql);
<span style="white-space:pre">		</span>query.executeUpdate();
<span style="white-space:pre">	</span>}
</span><span style="font-family:Microsoft YaHei, SimHei, arial;">执行后就是你想要的结果,hibernate4完全可以自己优化sql语句,优化你的代码,大家有好的别忘了分享。
}
</span>


猜你喜欢

转载自blog.csdn.net/hbl6016/article/details/49988553