Spring 不仅仅是一个IoC container。
其提供的Spring Jdbc提供了一层对jdbc很薄的封装,功能却是异常强大。
1、Template模式的使用,使我们只关心,sql, 输入参数,输出映射。
2、newBeanPropertySqlParameterSource(t) 直接把bean转成输入参数。
3、ParameterizedBeanPropertyRowMapper.newInstance(UserInfo.class)直接将bean转成输出映射。
4、一个dao根据输入参数不同,动态生成多条sql语句。很有一点ibatis的味道。
5、学习曲线低,会sql和jdbc的可以直接写。适合“你请到了只会写jsp和sql的极品,又想让他明天开始干活..... ”
详见:http://wiki.springside.org.cn/display/SpringSide3/ExtremeWeb
- packageorg.springside.examples.extremeweb.service;
- importjava.util.Collection;
- importorg.springframework.stereotype.Service;
- importorg.springframework.transaction.annotation.Transactional;
- importorg.springside.examples.extremeweb.entity.User;
- importorg.springside.examples.extremeweb.util.SimpleJdbcSupport;
- @Service
- @Transactional
- publicclassUserServiceextendsSimpleJdbcSupport{
- privatestaticStringQUERY_ALL_USER="selectname,login_name,passwordfromusers";
- privatestaticStringQUERY_USER="selectname,login_name,passwordfromuserswherelogin_name=?";
- privatestaticStringINSERT_USER="insertintousers(name,login_name,password)values(:name,:loginName,:password)";
- privatestaticStringDELETE_USER="deletefromuserswherelogin_name=?";
- privatestaticStringDELETE_USER_ROLES="deletefromusers_roleswhereuser_idin(selectidfromuserswherelogin_name=?)";
- @Transactional(readOnly=true)
- publicCollection<User>getAllUser(){
- returnjdbcTemplate.query(QUERY_ALL_USER,resultBeanMapper(User.class));
- }
- publicUsergetUser(StringloginName){
- returnjdbcTemplate.queryForObject(QUERY_USER,resultBeanMapper(User.class),loginName);
- }
- publicvoidcreateUser(Useruser){
- jdbcTemplate.update(INSERT_USER,paramBeanMapper(user));
- }
- publicvoiddeleteUser(StringloginName){
- jdbcTemplate.update(DELETE_USER_ROLES,loginName);
- jdbcTemplate.update(DELETE_USER,loginName);
- }
- }