Spring-004-jdbcTemplete基本操作

  1. spring框架是一站式框架 所以针对javaee三层结构每一层都有解决技术
  2. 在dao层使用jdbcTemplete
  3. spring对不同的持久层都多了对应的封装


    image
  4. jdbcTemplete是对idbc的封装

jdbcTemplete最基本的操作 CRUD

  1. 导入jar包 spring-jdbc + spring-tx + 数据库驱动
  2. 创建对象,设置数据库的信息
  3. 创建jdbcTemplete对象,设置数据源
  4. 调用jdbcTemplete对象里面的方法实现操作

增加

public void add(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        
        //调用jdbcTemplete对象里面的方法实现操作  
        //创建sql语句  
        String sql = "insert into User values(?,?)";
        int rows = jdbcTemplate.update(sql, "lily","123456");
        System.out.println(rows);
        
    }

修改

    public void update(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "update user set password=? where username=?";
        int rows = jdbcTemplate.update(sql,"123","lily");
        System.out.println(rows);
    }

删除

public void delete(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "delete from user where username=?";
        int rows = jdbcTemplate.update(sql,"lily");
        System.out.println(rows);
    }

查询

jdbcTemplet实现查询,有接口RowMapper,jdbc针对这个借口没有提供实现类,得到不同的类型数据需要自己进行数据封装
jdbc实现代码

    public void testJDBC(){
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;
        
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //创建连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testspring","root","");
            //编写sql语句
            String sql = "select * from user where username=?";
            //预编译sql
            psmt = conn.prepareStatement(sql);
            //设置参数值
            psmt.setString(1, "lily");
            //执行sql
            rs = psmt.executeQuery();
            //遍历结果集
            while(rs.next()){
                //得到返回结果值
                String username = rs.getString("username");
                String password = rs.getString("password");
                System.out.println(username+password);
                //然后通过 new创建对象
            }
            
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                rs.close();
                psmt.cancel();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
  1. 使用jdbcTemplet查询返回某一个值
public void testCount(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select count(*) from user";
        int count = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(count);
    }
  1. 查询返回对象
    image

    参数介绍
    第一个参数是sql语句
    第二个参数是 RowMapper,是接口 类似于dbutils里面的接口
    第三个参数是可变参数
    public void testObject(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select * from user where username=?";
        //需要自己写类来实现接口,自己做数据封装
        User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(),"jack");
        System.out.println(user);
    }

MyRowMapper类 进行数据获取和封装对象

class MyRowMapper implements RowMapper<User>{

    @Override
    public User mapRow(ResultSet rs, int num) throws SQLException {
        //num表示返回的结果条数 
        // TODO Auto-generated method stub
        //1 从结果集里面得到数据
        String username = rs.getString("username");
        String password = rs.getString("password");
        
        //2 把数据封装到对象里面
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        return user;
    }
    
}
  1. 查询返回list集合
    public void testList(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select * from user";
        //需要自己写类来实现接口,自己做数据封装
         List<User> list = jdbcTemplate.query(sql, new MyRowMapper());
        System.out.println(list);
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,188评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,170评论 6 342
  • 1、谈谈你对Struts的理解。 答: 1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的...
    慕容小伟阅读 7,928评论 0 13
  • 精进 营销的命脉永远在于顾客使用完产品后的感受,而不是销售前的噱头 感受 很多时候精神的认同大与物质的激励 收获 ...
    若兰ZHOU阅读 1,162评论 0 1
  • esperanzalx,是一个中国姑娘,在日本留学期间,去大坂监狱当过中文翻译。我跟她聊了聊这次有趣的经历以及学习...
    杨夏阅读 5,711评论 1 5

友情链接更多精彩内容