请问在spring中如何调用复杂sql?

xinghao_1984 2009-06-27 02:26:43
我有一个复杂的sql语句。现在在spring项目中需要调用执行。
请问代码怎么写啊?
最好能举个例子!
...全文
175 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiyangdesky 2009-11-20
  • 打赏
  • 举报
回复
jf
  • 打赏
  • 举报
回复
SQLQuery query1=session.createSQLQuery(sql1); //执行第1个SQL
query1.executeUpdate(); //执行更新

SQLQuery query1=session.createSQLQuery(sql1); //执行第1个SQL
sqlQuery.addScalar("name", Hibernate.STRING);
sqlQuery.addScalar("id", Hibernate.LONG);
sqlQuery.addScalar("state", Hibernate.SHORT);
return sqlQuery.list();//执行查询

executeUpdate和list是必需的
jiangxilaile 2009-07-15
  • 打赏
  • 举报
回复
有的公司禁止用hibernate进行大数据量查询的
xinghao_1984 2009-07-15
  • 打赏
  • 举报
回复
对啊,比如有一些多表关联的,或者带复杂子查询的语句。在ssh项目中怎么处理呢??
youjianbo_han_87 2009-07-15
  • 打赏
  • 举报
回复
如果是调用原生 SQL的话,用 jdbcTemplate执行(你在google里能搜 jdbctemplate用法)

如果是 HQL的话,就用 HibernateTemplate 执行(你在google里能搜 jdbctemplate用法)
deng1234 2009-07-15
  • 打赏
  • 举报
回复
public List findEmployee(final Integer userId) {
return (List) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
StringBuffer sql = new StringBuffer();
sql.append("select b.Employee_ID,b.Employee_Code..............");
Connection conn = session.connection();
PreparedStatement prs = null;
ResultSet rs = null;
List<Employee> list = new ArrayList<Employee>();
try {
prs = conn.prepareStatement(sql.toString());
rs = prs.executeQuery();
while (rs.next()) {
Employeeemployee = new Employee();
employee.setEmployeeId(rs.getInt("Employee_ID"));
employee.setEmployeeCode(rs.getString("Employee_Code"));
list.add(employee);
}
} catch (Exception ex) {
ex.printStackTrace();
}finally{
if(rs!=null){
try{
rs.close();
}catch(Exception dex){
dex.printStackTrace();
}
}else if(prs != null){
try{
prs.close();
}catch(Exception sex){
sex.printStackTrace();
}
}else if(conn!=null){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}else if(session!=null){
try{
session.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
return list;
}
}, true);
}
a_will 2009-07-03
  • 打赏
  • 举报
回复
警告楼上的同学,hibernate不是万能的,上百万,千万的表,用hibernate做查询,就是垃圾一个。
bibixiaozhu 2009-07-03
  • 打赏
  • 举报
回复
HQL有什么复杂语句是解决不了的,好像hql语句写复杂查寻还更加简单的样子..
是不是要跨表呀,再复杂不也就是那样,大不了多跨几个表,
如果是,我可以给你一些hql语句,专门做做那种跨表的复杂查询的..
xinghao_1984 2009-07-01
  • 打赏
  • 举报
回复
难道大家都没碰到过spring项目中有复杂sql语句的,用HQL解决不了的??
bibixiaozhu 2009-07-01
  • 打赏
  • 举报
回复
这下麻烦了,这个又不像,hibernate可以在.xml里在框子里点点就配好...
全手动写,还不知道怎么写...
不过不知道可不可把hibernate里的那段处理事务的方法拿过来用,反正在曾经做的数据开发中sql语句的事务外理方式其实是跟
hibernate里那段事务处理代码一样的..那么说不定spring里也一样呢,真接给在sql语句执行语句那一段添一个Transaction,commit事务回滚
试试看吧..
yuzi13631138780 2009-06-30
  • 打赏
  • 举报
回复
找本书看看吧,单讲spring的事务管理就有1百几十页了..可以用声明式事务管理:
配好datsource,sessionFactory,TransactionManager,配置事务策略:
<tx:advice>

</txadvice>

<aop:config>
</aop:config>
xinghao_1984 2009-06-30
  • 打赏
  • 举报
回复
自己顶一下。难道要用spring的编程式事物方式吗?请问具体代码怎么写呢?
yuzi13631138780 2009-06-29
  • 打赏
  • 举报
回复
应该是事务代理或事务策略吧,感觉没commit()那样?
lansetianle 2009-06-29
  • 打赏
  • 举报
回复
学习中,帮你顶吧。。。
xinghao_1984 2009-06-29
  • 打赏
  • 举报
回复
是hibernate+Spring呀。我用了6楼的方法。虽然没有报错,可是doInHibernate里的方法没有执行啊!
this.getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
System.out.println("*****************************");
session.createSQLQuery("update sql");
System.out.println("*****************************");
return null;
}
});
前后都输出了*,但是sql语句没有执行!请问没执行sql可能是什么原因?我的事物是在spring里配置好的!
xinghao_1984 2009-06-29
  • 打赏
  • 举报
回复
我也感觉是这样啊。好像是没commit.可是应该怎么写呢!我之前在Spring配置文件里的配置好像没起作用啊!
dinghun8leech 2009-06-28
  • 打赏
  • 举报
回复
楼主单独用的spring还是集合了hibernate??
前者的话直接在楼主定义的jdbc工具集里去直接执行即可。
yuzi13631138780 2009-06-28
  • 打赏
  • 举报
回复
getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
Query q=session.createSQLQuery("your sqk");
return null;
}
});
一洽客服系统 2009-06-27
  • 打赏
  • 举报
回复
什么sql这么复杂呢 不行你就写个存储过程 掉存储过程 直接用spring的 jdbcsupport 也还是很方便的
xinghao_1984 2009-06-27
  • 打赏
  • 举报
回复
自己顶一下。其实就是求在spring中调用一般sql语句的方法。
加载更多回复(3)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧