Spring 不仅仅是一个IoC container。
其提供的Spring Jdbc提供了一层对jdbc很薄的封装,功能却是异常强大。
1、Template模式的使用,使我们只关心,sql, 输入参数,输出映射。
2、new BeanPropertySqlParameterSource(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
- package org.springside.examples.extremeweb.service;
- import java.util.Collection;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springside.examples.extremeweb.entity.User;
- import org.springside.examples.extremeweb.util.SimpleJdbcSupport;
- @Service
- @Transactional
- public class UserService extends SimpleJdbcSupport {
- private static String QUERY_ALL_USER = "select name,login_name,password from users";
- private static String QUERY_USER = "select name,login_name,password from users where login_name=?";
- private static String INSERT_USER = "insert into users (name,login_name,password) values(:name,:loginName,:password)";
- private static String DELETE_USER = "delete from users where login_name=?";
- private static String DELETE_USER_ROLES = "delete from users_roles where user_id in (select id from users where login_name=?)";
- @Transactional(readOnly = true)
- public Collection<User> getAllUser() {
- return jdbcTemplate.query(QUERY_ALL_USER, resultBeanMapper(User.class));
- }
- public User getUser(String loginName) {
- return jdbcTemplate.queryForObject(QUERY_USER, resultBeanMapper(User.class), loginName);
- }
- public void createUser(User user) {
- jdbcTemplate.update(INSERT_USER, paramBeanMapper(user));
- }
- public void deleteUser(String loginName) {
- jdbcTemplate.update(DELETE_USER_ROLES, loginName);
- jdbcTemplate.update(DELETE_USER, loginName);
- }
- }