各位大侠,在下请教一个问题,问得低级了不要见笑,我用的是spring2.5,括号,不熟,业务层的实现一般是这样写的
public List<Object> checkLogin(User user)
{
String sql=" select * from `user` where loginname=? and password=? and `isdeleted`=0 ";
Object[] object={ user.getLoginname(),user.getPassword() };
return loginDao.selectAll(sql, object, EUser.class);
}
都是这种格式,我现在想把sql语句全部放到xml里面去(操作数据库用的是JDBC不是hibernate),该用个什么思路,或者说用个什么技术,关键就是那个占位符该怎么处理,我想让sql和java分开,但是怎么给占位符赋值,单纯是spring能不能有这个功能,望高手不吝赐教!!!!

解决方案 »

  1.   

    正好我现在接触的这个项目是完全用spring 访问jdbcTemplate做的,sql是写在spring里的,这个你要先定义一个LoginGetSql.java 处理请求也是用spring的 MVC实现的
    比如public class LoginGetSql{
          private String loginsql;
          //生成geter和setter    }spring配置文件中
       <bean id="loginMappingManual"
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
    <list>
    <ref bean="RequestHandlerInterceptor" />
    </list>
    </property>
    <property name="mappings">
    <props>
    <!-- 用户登陆 -->
    <prop key="/sysconfig/userLogin.do">loginAction</prop>

    </props>
    </property>
    </bean>
      <!-- 用户登陆SQL语句 -->
    <bean id="loginGetSql" class="com.LoginGetSql.java">
     <property name="loginSql" value="SELECT username from user where ...." />
    </bean>
    某个类在要用到sql的时候 然后把 定义一个
    XXXService
    {
        private LoginGetSql loginGetSql;
        //生成getter和setter    String sql=loginGetSql.getloginSql();//这样就得到sql
    }
    大概的思路就是这样的,希望对你有一点点帮助。
      

  2.   

    首先谢谢上面各位的宝贵意见和建议,注入和ibatis等都可以解决问题,我也是刚刚用struts2.1.6+Spring2.5不久,现在数据库的操作全部是spring2.5的org.springframework.jdbc.core.simple.SimpleJdbcTemplate,感觉用起来也比较方便,用现在想问的一个问题是,是用JDBC好还是ibatis好(不想学hibernate),根据性能灵活度等综合,我没有用过ibatis,希望前辈指教,查询时的sql语句要拼接,ibatis能不能很好解决!!!
      

  3.   

    当然是ibatis好啊,ibatis的sqlmap就是满足你要把业务sql包含在一些配置文件中,这样方便维护,还有使用ibatis可以不用考虑connection的开启和关闭。这点jdbc比不了的。
    其实最强的还是hibernate,不过要要用好hibernate需要2-3年,而用好ibatis只用2-3天,