zoukankan      html  css  js  c++  java
  • Spring JDBC的使用

    1、为什么使用Spring提供的JDBC的封装?

      因为Spring提供了完整的模板类以及基类可以简化开发,我们只需写少量的代码即可。

    2、实例讲解

    第一步:导入依赖  mysql-connector  spring-jdbc  spring-tx spring-core  spring-beans  spring-context 等等

    第二步:数据库的建立,配置xml

    第三步:获取jdbcTemplate对象

      可以这样获得

     private JdbcTemplate jdbcTemplate;
    
        public void setDataSource(DataSource dataSource){
            this.jdbcTemplate=new JdbcTemplate(dataSource);
    } 
    <bean id="userDao" class="com.test.jdbc.dao.impl.UserDaoImpl">
            <property name="dataSource" ref="dataSource"/>
    </bean>

      也可以继承JdbcDaoSupport,使用super.getJdbcTemplate()获得

    第四步:使用jdbcTemplate对象进行增删改查

      增删改使用update(),这个方法的参数,第一个为sql语句,之后为可变参数,传入sql语句中的占位符

      查询使用queryForObject()方法的第一个参数为sql中需要的参数,第三个参数为实现RowMapper接口的对象,

        用于处理结果集,该方法要求返回单一的对象

      query()该方法返回对象集合

    public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {
    
        public void save(User user) {
            super.getJdbcTemplate().update("insert into user(id,username,password,date,salary) values(null,?,?,?,?)",
                    user.getUsername(),user.getPassword(),user.getDate(),user.getSalary());
    
        }
    
        public void update(User user) {
            super.getJdbcTemplate().update("update user set username=?,password=?,date=?,salary=? where id=?",
                    user.getUsername(), user.getPassword(), user.getDate(), user.getSalary(), user.getId());
    
        }
    
        public void delete(Integer id) {
            super.getJdbcTemplate().update("delete from user where id=?",id);
        }
    
        public User findById(Integer id) {
           /* List<User> user = super.getJdbcTemplate().query("select * from user where id=?", new Object[]{id},
                    new RowMapper<User>() {
                        @Override
                        public User mapRow(ResultSet resultSet, int i) throws SQLException {
                            User user = new User();
                            user.setId(resultSet.getInt("id"));
                            user.setDate(resultSet.getDate("date"));
                            user.setUsername(resultSet.getString("username"));
                            user.setPassword(resultSet.getString("password"));
                            user.setSalary(resultSet.getBigDecimal("salary"));
                            return user;
                        }
                        //方法的返回值会直接封装到集合中
                    });
            return user.size()>0?user.get(0):null;*/
    
            User user = super.getJdbcTemplate().queryForObject("select * from user where id=?", new Object[]{id},
                    new RowMapper<User>() {
                        @Override
                        public User mapRow(ResultSet resultSet, int i) throws SQLException {
                            User user = new User();
                            user.setId(resultSet.getInt("id"));
                            user.setDate(resultSet.getDate("date"));
                            user.setUsername(resultSet.getString("username"));
                            user.setPassword(resultSet.getString("password"));
                            user.setSalary(resultSet.getBigDecimal("salary"));
                            return user;
                        }
                    });
            return user;
        }
    
        public List<User> findAll() {
            List<User> users = super.getJdbcTemplate().query("select * from user",
                    new RowMapper<User>() {
                        @Override
                        public User mapRow(ResultSet resultSet, int i) throws SQLException {
                            User user = new User();
                            user.setId(resultSet.getInt("id"));
                            user.setDate(resultSet.getDate("date"));
                            user.setUsername(resultSet.getString("username"));
                            user.setPassword(resultSet.getString("password"));
                            user.setSalary(resultSet.getBigDecimal("salary"));
                            return user;
                        }
                        //方法的返回值会直接封装到集合中
                    });
            return users;
        }
    
    }

    3、JdbcTemplate是JDBC核心包的中心类

      知识点查询地址:

      https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/data-access.html#jdbc

  • 相关阅读:
    cout 格式化输出
    CreateEvent的用法
    深入理解CRITICAL_SECTION
    const型类成员
    用 const 限定类的成员函数
    C++文件读写详解(ofstream,ifstream,fstream)
    C++中回调函数(CallBack)的使用
    SetTimer函数的用法
    CString转换成int CString类相应函数
    自己设计并制作了一个自己主动温度控制系统
  • 原文地址:https://www.cnblogs.com/xfdhh/p/11488317.html
Copyright © 2011-2022 走看看