spring第三部分(二)&.spring的jdbcTemplate操作

Spring的jdbcTemplate操作

1.spring框架一站式框架

(1)针对javaee三层,每一层都有解决技术
(2)在dao层,使用jdbcTemplate

2.spring对不同的持久化成都进行了封装

CRM持久化技术                        模板类
JDBC            org.springframework.jdbc.core.JdbcTemplate
Hibemate            org,springframework.orm.hibernate.HibernateTemplate
IBatis(Mybatis)     org.springframework.orm/ibatis.SqlMapClienTemplate
JPA             org.springfamework.orm.jpa.JpaTemplate

3).JdbcTemplate对jdbc进行封装

3.JdbcTemplate使用和dbutils使用很相似,都是对数据库进行CRUD操作

增加:

1.导入JdbcTemplate使用的jar包
spring-jdbc-4.2
spring-ts-4.2S事务的内容

2.创建对象设置数据库的信息
3.创建一个JdbcTemplate对象,设置数据源
4.调用JdbcTemplate对象里面的方法进行实现操作

public void add() {
        //创建对象设置数据库的信息
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/teachger_student");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        //创建一个JdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

        //调用JdbcTemplate对象里面的方法进行实现操作
        String  sql="insert into user value(? ,?)";
        int row = jdbcTemplate.update(sql, "users","123");
        System.out.println(row);

    }

修改:

public void update() {
        //创建对象设置数据库的信息
                DriverManagerDataSource dataSource=new DriverManagerDataSource();
                dataSource.setDriverClassName("com.mysql.jdbc.Driver");
                dataSource.setUrl("jdbc:mysql://localhost:3306/teachger_student");
                dataSource.setUsername("root");
                dataSource.setPassword("123456");
                //创建一个JdbcTemplate对象,设置数据源
                JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
                //调用JdbcTemplate对象里面的方法进行实现操作
                String sql="update user set passwoerd=? where username=?";
                int row = jdbcTemplate.update(sql,"12345","user");
                System.out.println(row);

    }

删除:

public void delete() {
//创建对象设置数据库的信息
DriverManagerDataSource dataSource=new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/teachger_student");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//创建一个JdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
//调用JdbcTemplate对象里面的方法进行实现操作
String sql="delete from user where username=?";
int row = jdbcTemplate.update(sql,"user");
System.out.println(row);

}

查询:

/*
    QueryRunner runner=new QueryRunner(dataSource);
    返回对象
    runner.query(sql,new BeanHandler<User>(User.class));
    返回list集合
    runner.query(sql,new BeanListHandler<User>(User.class));
    在dbutils时候,有接口ResultSetHanlder
    dbutils提供了针对不同的结果实现类
*/  

    /*
    2.在JdbcTemplate实现查询,有接口RowMapper
    JdbcTemplate针对这个接口没有提供实现类,得到不同的类型数据需要自己进行数据封装

3.查询具体的实现

第一个:查询返回某一个值
        jdbcTemplate.queryForObject(sql, Integer.class);
        第一个参数:是sql语句
        第二个参数 返回值类型的class
        @Test
    public void testCount() {
        /创建对象设置数据库的信息
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/teachger_student");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        //创建一个JdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用JdbcTemplate对象里面的方法进行实现操作
        String sql="select count(*) from user ";
        Integer row = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(row);
    }
    原始jdbc代码
    @Test
    public void jdbc() {
        Connection con=null;
        PreparedStatement pr=null;
        ResultSet rs=null;
        //加载驱动
        try {
            Class.forName("com.mysql.jdbcl.Driver");
            //创建连接
             con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teachger_student"
                    , "root", "123456");
             String sql="select * from user where username=?";
             pr=con.prepareStatement(sql);
             //设置参数
             pr.setString(1, "lucy");
             rs=pr.executeQuery();
             while(rs.next()) {
                 Usre user=new User();
                 user.setUsername(rs.getString(username));
                 user.setPassword(rs.getString(password));
                 System.out.println(user);


             }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            rs.close();
            pr.close();
            con.close();
        }


    }

第二个:查询返回对象

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

    @Override
    public T mapRow(ResultSet rs, int arg1) throws SQLException {
        //1从结果集中得到数据
        String username=rs.getString("username");
        String password=rs.getString("password");
        //2.把得到的数据封装到对象里面
        User user=new User();
        user.setUsername(username);
        user.setPassword(password);
        return user;
    }

}
    带三个:查询返回list集合
    jdbcTemplate.query(sql, rowMapper, args)
    第一个参数:sql语句
    第二个参数:RowMapper接口,自己写类实现数据封装
    第三个:可变参数
    @Test
    public void testList () {
        //创建对象设置数据库的信息
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/teachger_student");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        //创建一个JdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        String sql="select * from user";
        List<user> list=jdbcTemplate.query(sql, new myRowMapper());
        System.out.println(list);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值