Spring整合JDBC实现数据库的增删改查操作

1.JDBC是什么

即Java Database Connectivity,它是提供了一组Java API来访问关系数据库的Java程序。

2.spring整合jdbc

2.1导入spring的依赖以及数据库的驱动包

 
    UTF-8
    1.7
    1.7
    5.2.5.RELEASE
  

  
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
      junit
      junit
      4.12
    
    
    
      org.aspectj
      aspectjweaver
      1.8.9
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      mysql
      mysql-connector-java
      5.1.38
    
  

2.2导入数据源的包


    
      commons-dbcp
      commons-dbcp
      1.4
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    

2.3在resources目录下创建beans.xml文件来创建datasource数据源



    

    
    
    
    
    
    



2.4创建jdbc.properties文件设置连接数据库的信息

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_jdbcdb?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

在beans.xml文件里面引入properties配置文件


3.实现数据库的增删改查

3.1创建一个用户表t_user

这里有两种方式。

  1. 用idea执行sql脚本进行创建
    在项目的根目录下创建一个sql目录,新建一个sql脚本文件,编写创建表的sql语句
    在这里插入图片描述
DROP DATABASE IF EXISTS spring_jdbcdb;
create database spring_jdbcdb DEFAULT  CHARACTER SET UTF8 COLLATE utf8_general_ci;
USE spring_jdbcdb;
GRANT ALL ON spring_jdbcdb.* TO 'lu'@'localhost' IDENTITY BY '123456';
CREATE TABLE t_user(
id int(10)PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR (100),
pass_word VARCHAR (100),
nick_name VARCHAR (100),
gid INT
);
CREATE TABLE t_group(
id INT (10)PRIMARY KEY AUTO_INCREMENT,
group_name VARCHAR (100)
)

使用idea执行sql脚本需要配置data source
Spring整合JDBC实现数据库的增删改查操作_第1张图片
连接之后,sql脚本文件空白处右键,run
3. 直接在navicat里面手动创建或新建查询执行sql语句进行创建

3.2编写用户表的实体类User

public class User {
    private int id;
    private String username;
    private String password;
    private String nickname;
    private int gid;
    private Group group;
    .
    .省略get和set方法以及构造方法
    .

创建一个接口,定义增删改查的方法,再写一个实现类,在里面编写具体方法

public interface IUserDao {
    public void add(User user, int gid);
    public void delete(int id);
    public void update(User user);
    public User load(int id);
   // public List list(String sql,Object[] args);
   public List list();
}

3.3创建JDBCTemplate对象

JDBCTemplate位于spring-jdbc的包里面
其全名为org.springframework.jdbc.core.JdbcTemplate
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句。
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。

3.4注入DataSource并且创建jdbcTemplate

在实现类里面

@Repository("UserDao")
public class UserDao implements IUserDao {
private JdbcTemplate jdbcTemplate;
    @Autowired
 public void init(DataSource dataSource){
        this.jdbcTemplate=new JdbcTemplate(dataSource);
    }

3.5重写增加方法

@Override
    public void add(User user, int gid) {
        String sql="Insert into t_user(user_name,pass_word,nick_name,gid) value (?,?,?,?)";
        jdbcTemplate.update(sql,user.getUsername(),user.getPassword(),user.getNickname(),user.getGid());

    }

3.6重写删除方法

 @Override
    public void delete(int id) {
        String sql="delete from t_user where id=?";
        jdbcTemplate.update(sql,id);

    }

3.7重写更新方法

 @Override
    public void update(User user) {
        String sql="update t_user set nick_name=? where id=?";
        jdbcTemplate.update(sql,user.getNickname(),user.getId());

    }

3.8重写查询单个用户的方法

JdbcTemplate对象提供了query方法及queryForXXX方法,用于执行查询相关语句。因此这里用queryForObject方法。
查询操作涉及到我使用了一个RowMapper。
sping中的RowMapper可以将数据中的每一行数据封装成用户定义的类。
通过建立内部类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现。

  1. 创建一个内部类实现RowMapper
public class UserRowMapper implements RowMapper {

    @Nullable
    @Override
    public User mapRow(ResultSet resultSet, int i) throws SQLException {
        User u=new User();
       u.setUsername(resultSet.getString(2));
       u.setPassword(resultSet.getString(3));
       u.setNickname(resultSet.getString(4));
       u.setGid(resultSet.getInt(5));
        return u;
    }
}

2.编写查询单个用户的方法

 @Override
 public User load(int id) {
        String sql="select * from t_user where id=?";
        UserRowMapper rowMapper=
                new UserRowMapper();

        Object[] params=new Object[]{id};

        User u =jdbcTemplate.queryForObject(sql,params,rowMapper);

        return u;
        }

3.9重写查询多个用户的方法

 @Override
    public List list() {
        String sql1="select * from t_user";
        UserRowMapper rowMapper=
                new UserRowMapper();

        List list
                =jdbcTemplate.query(sql1,rowMapper);
        return list;
        }

你可能感兴趣的:(Spring,JDBC)