Spring JDBC的使用

本文深入讲解了使用Spring JDBC封装的原因及其实现步骤。通过引入Spring的JDBC模板类,简化了数据库操作,使开发者能够专注于业务逻辑而非底层细节。文章详细介绍了如何配置依赖、设置数据源、使用JdbcTemplate进行CRUD操作,并提供了具体的代码示例。

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

 

转载于:https://www.cnblogs.com/xfdhh/p/11488317.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值