JdbcTemplate实现增删改查

Posted 踏步

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JdbcTemplate实现增删改查相关的知识,希望对你有一定的参考价值。

1、首先,导入相应的包

 

 

 2、添加数据(其实除了查询其他的操作调用的都是update方法,只是参数有所区别)

@Test
    void testAdd() {
        //设置数据源
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("数据库密码");
    
    //将数据源放入JdbcTemplate中
    JdbcTemplate jt = new JdbcTemplate(dd);
    //编写sql语句
    String sql = "insert into myclass values(?,?,?)";
    //调用他的update方法
    jt.update(sql, "4","xue","7978");
    }

3、删除数据

@Test
    void testDelete() {
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("数据库密码");
    
    JdbcTemplate jt = new JdbcTemplate(dd);
    String sql = "delete from myclass where id=?";
    jt.update(sql, "1");
    }

4、修改数据

@Test
    void testUpdate() {
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("数据库密码");
    
    JdbcTemplate jt = new JdbcTemplate(dd);
    String sql = "update myclass set name=? where id=?";
    jt.update(sql, "smn","3");
    }

5、1)查询数据(查询返回某一个值)

 

@Test
    void testSelect() {
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("数据库密码");
    
    JdbcTemplate jt = new JdbcTemplate(dd);
    String sql = "select count(*) from myclass";
    int count = jt.queryForObject(sql, Integer.class);//此处返回数据的总数(一个数值)
    System.out.println(count);
    }

 

5、2)查询返回对象

先来一个一般做法

 

@Test
    void testjdbc() throws Exception
    {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
           //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
           //创建连接
        conn = DriverManager.getConnection("jdbc:mysql:///users","root","数据库密码");
        //编写sql语句
        String sql = "select * from myclass where name=?";
        //预编译
        ps = conn.prepareStatement(sql);
        //设置参数值
        ps.setString(1, "嘻嘻");
        //执行sql
        rs = ps.executeQuery();
        //遍历结果集
        while(rs!=null)
        {
            if(rs.next())
            {
                int id = rs.getInt("id");
                int sex = rs.getInt("sex");
                user user = new user();
                user.setName(id);
                user.setSex(sex);
                System.out.println(user);
            }
    
        }
    rs.close();
    ps.close();
    conn.close();
    ps.close();
    }

 

这是创建的user类

 

package springjdbc;
 
public class user {
    private int id;
    private int sex;
    public int getName() {
        return id;
    }
    public void setName(int  id) {
        this.id = id;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "user [name=" + id + ", sex=" + sex + "]";
    }
    
 
}

 

再来使用过JdbcTemplate的

 

@Test
    void testObject() throws Exception {
        DriverManagerDataSource dd = new DriverManagerDataSource();
        dd.setDriverClassName("com.mysql.jdbc.Driver");
        dd.setUrl("jdbc:mysql:///users");
        dd.setUsername("root");
        dd.setPassword("数据库密码");
        
        String sql = "select * from myclass where name =?";
        JdbcTemplate jt = new JdbcTemplate(dd);//jt对Jdbc进行封装
        user user = jt.queryForObject(sql, new rowmapper(),"嘻嘻");
        System.out.println(user);
    }

 

此处调用的是这个方法

 

 

其中RowMapper是个接口,需要自己写类实现接口,自己做数据封装

RowMapper实现类如下:

class rowmapper implements RowMapper<user>
{
 
    @Override
    public user mapRow(ResultSet rs, int arg1) throws SQLException {
        // TODO Auto-generated method stub
        int id = rs.getInt("id");
        int sex = rs.getInt("sex");
        user user = new user();
        user.setName(id);
        user.setSex(sex);
        return user;
        
    }
}

5、3)查询返回List集合

@Test
void testList()
{
DriverManagerDataSource dd = new DriverManagerDataSource();
dd.setDriverClassName("com.mysql.jdbc.Driver");
dd.setUrl("jdbc:mysql:///users");
dd.setUsername("root");
dd.setPassword("数据库密码");

String sql = "select * from myclass";
JdbcTemplate jt = new JdbcTemplate(dd);
List<user> list = jt.query(sql, new myrowmapper());
System.out.println(list);
}

 

 

 

 

 

 

此处调用的是这个方法

 

 

以上的Object... args是个可变参数,即你进行数据库查询时,查询语句中的参数

sql是你写的查询语句

RowMapper的实现类和上面返回对象的实现类一样

以上是关于JdbcTemplate实现增删改查的主要内容,如果未能解决你的问题,请参考以下文章

JdbcTemplate实现增删改查

JdbcTemplate实现增删改查操作

使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 上篇

spring学习spring的jdbcTemplate(增删改查封装)

java--使用jdbcTemplate进行增删改查

Java Spring-JdbcTemplate增删改查