zoukankan      html  css  js  c++  java
  • 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的实现类和上面返回对象的实现类一样

    I have a dream : Sandy beach B-J-N.
  • 相关阅读:
    IP地址和MAC地址,以及arp攻击
    可爱的老婆
    win7 homebasic下,.net2008 连接oracle,提示错误OCIEnvCreate 失败,返回代码为 1,但错误消息文本不可用
    检讨
    数据库索引
    PB调用C#编写的DLL
    用c#开发可供PB调用的COM组件
    关于excel取消科学计数法的问题
    按键码对照
    JSONP学习资料
  • 原文地址:https://www.cnblogs.com/mjtabu/p/14828300.html
Copyright © 2011-2022 走看看