spring-JDBCTemplate

首先看下jdbc最原始的操作方法

/**
        *@Author: Han Yu
        *@Description: jdbc 最原始的实现(简单的列子)
        *@Param:
        *@Return:
        *@Date:   Create in 21:07 2019/1/12

    */
    @Test
    public void JDBCTest(){
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;

        try{
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建连接
            conn = DriverManager.getConnection("jdbc:mysql:///springjdbc","root","mysql");
            // 编写sql语句
            String sql = "select * from user where id = ?";
            //预编译sql
            psmt = conn.prepareStatement(sql);
            //设置参数值
            psmt.setInt(1,1);
            //执行sql
            rs = psmt.executeQuery();
            //遍历结果集
            while (rs.next()){
                //得到返回的结果值
                int id =  rs.getInt("id");
               String name = rs.getString("user");
               User user = new User();
               user.setId(id);
               user.setUser(name);
               System.out.println(user);

            }

        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try{
                rs.close();
                psmt.close();
                conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }


        }
    }

spring jdbcTemplate操作步骤

1 导入spring jdbcTemplate的jar包

spring-jdbc-4.2.4.RELEASE.jar 这是 spring jdbc 的 jar 包
spring-tx-4.2.4.RELEASE.jar 这是 spring 事务管理的 jar 包
还需要数据库的驱动的 jar 包

2 创建对象 设置数据库信息

3 创建 jdbcTemplate 对象,设置数据源

4 调用 jdbcTmplate 对象里面的方法实现操作

具体代码

1 使用JdbcTemplate创建数据表
         /*
       jdbc模板 依赖连接池获得数据连接, 所以必须先构造连接池
        */
       DriverManagerDataSource dataSource = new DriverManagerDataSource();
       dataSource.setDriverClassName("com.mysql.jdbc.Driver");
       dataSource.setUrl("jdbc:mysql:///springjdbc");
       dataSource.setUsername("root");
       dataSource.setPassword("mysql");


       /*
       创建jdbc模板
        */
       JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

       /*
       建表的sql语句
        */
        String sql="create table student(id int,name char(20) )";

        jdbcTemplate.execute(sql);
2 对表的增删改
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

/**
 * @Author: Han Yu
 * @Description: spring-jdbc模板-表数据crud操作
 * @Date: Create in 19:03 2019/1/12
 */
public class CrudTest {

    /**
        *@Author: Han Yu
        *@Description: 配置jdbc连接池(创建数据库连接池  创建模板对象)
        *@Param: void
        *@Return: JdbcTemplate
        *@Date:   Create in 19:53 2019/1/12

    */
    public static JdbcTemplate setjdbc(){
        //数据库连接池
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql:///springjdbc");
        dataSource.setUsername("root");
        dataSource.setPassword("mysql");
        //创建模板对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        return jdbcTemplate;
        //
    }



    /**
     *@Author: Han Yu
     *@Description: 向springjdbc数据库下的User表中添加操作
     *@Param:  void
     *@Return: void
     *@Date:   Create in 19:18 2019/1/12

     */
    @Test
    public void add(){
        //数据库连接池
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql:///springjdbc");
        dataSource.setUsername("root");
        dataSource.setPassword("mysql");
        //创建模板对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        //
        String sql="insert into User values('张三',2) ";

        jdbcTemplate.execute(sql);

    }


    /**
        *@Author: Han Yu
        *@Description: 向springjdbc数据库下的User表中添加一列
        *@Param:
        *@Return: 
        *@Date:   Create in 19:24 2019/1/12
        
    */
    @Test
    public void AddColumn(){
        JdbcTemplate jdbcTemplate=CrudTest.setjdbc();
        String sql="Alter table user ADD id int";
        jdbcTemplate.execute(sql);
    }



    /**
        *@Author: Han Yu
        *@Description:对springjdbc数据库下的User表中进行删除操作
        *@Param:
        *@Return:
        *@Date:   Create in 19:22 2019/1/12

    */
    @Test
    public void DeleteTest(){
        JdbcTemplate jdbcTemplate = CrudTest.setjdbc();
        String sql="delete from user where id=?";
        jdbcTemplate.update(sql,"2");
        //jdbcTemplate.execute(sql);
    }
    
    
    /**
        *@Author: Han Yu
        *@Description: 对springjdbc数据库下的User表中进行更新操作
        *@Param:
        *@Return: 
        *@Date:   Create in 20:03 2019/1/12
        
    */
    @Test
    public void UpdateTest(){
        JdbcTemplate jdbcTemplate = CrudTest.setjdbc();
        String sql="update User set user=? WHERE id =?";
        //jdbcTemplate.execute(sql);
        jdbcTemplate.update(sql,"李四",1);
    }
}
3 对表中数据进行的查询操作

jdbcTemplate 实现查询 有接口 RowMapper

jdbcTemplate 针对这个接口没有实现类 得到不同的数据需要自己进行数据封装

4 查询具体实现
4.1 查询返回某一个值
4.2 查询返回对象
4.3 查询返回 List 集合
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import java.sql.*;
import java.util.List;

/**
 * @Author: Han Yu
 * @Description: 对springjdbc数据库下的User表中进行查询操作
 * @Date: Create in 20:40 2019/1/12
 */
public class SelectTest {
    /**
     *@Author: Han Yu
     *@Description: 配置jdbc连接池(创建数据库连接池  创建模板对象)
     *@Param: void
     *@Return: JdbcTemplate
     *@Date:   Create in 19:53 2019/1/12

     */
    public static JdbcTemplate setjdbc() {
        //数据库连接池
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql:///springjdbc");
        dataSource.setUsername("root");
        dataSource.setPassword("mysql");
        //创建模板对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        return jdbcTemplate;
        //
    }

    /**
        *@Author: Han Yu
        *@Description: 查询user表中的一共有多少条数据
        *@Param: void
        *@Return: int
        *@Date:   Create in 20:41 2019/1/12

    */
    @Test
    public void CountTest(){
        //得到jdbcTemplate对象
        JdbcTemplate jdbcTemplate = SelectTest.setjdbc();

        //编写查询sql语句
        String sql = "select Count(*) from User";

        //调用jdbcTemplate的方法
        int count = jdbcTemplate.queryForObject(sql,Integer.class);
        System.out.println(count);


    }

    /**
        *@Author: Han Yu
        *@Description: 查询返回对象
        *@Param:
        *@Return:
        *@Date:   Create in 21:28 2019/1/12

    */
    @Test
    public void testObject(){
        JdbcTemplate jdbcTemplate = SelectTest.setjdbc();
        String sql="Select * from user where id = ?";
        /*调用模板中的方法
        第一个参数是sql语句
        第二个参数是 RowMapper, 是接口 类似于dbutils里面的接口
        第三个参数是 可变参数  sql语句中传的值
        第二个参数接口RowMapper 需要自己写类实现接口  自己做数据封装
        */
       User user =  jdbcTemplate.queryForObject(sql,new MyRowMapper(),1);
        System.out.println(user);
    }

    /**
        *@Author: Han Yu
        *@Description: 查询返回集合
        *@Param:  void
        *@Return: void
        *@Date:   Create in 12:41 2019/1/13

    */
    @Test
    public void listTest(){
        JdbcTemplate jdbcTemplate = SelectTest.setjdbc();
        //sql语句
        String sql="select * from user";
        //调用jdbc的方法
        /*调用模板中的方法
        第一个参数是sql语句
        第二个参数是 RowMapper,
        第三个参数是 可变参数
        第二个参数接口RowMapper 需要自己写类实现接口  自己做数据封装
        */
        List<User>  list = jdbcTemplate.query(sql,new MyRowMapper());
        System.out.println(list);

    }

    /**
        *@Author: Han Yu
        *@Description: jdbc 最原始的实现(简单的列子)
        *@Param:
        *@Return:
        *@Date:   Create in 21:07 2019/1/12

    */
    @Test
    public void JDBCTest(){
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;

        try{
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建连接
            conn = DriverManager.getConnection("jdbc:mysql:///springjdbc","root","mysql");
            // 编写sql语句
            String sql = "select * from user where id = ?";
            //预编译sql
            psmt = conn.prepareStatement(sql);
            //设置参数值
            psmt.setInt(1,1);
            //执行sql
            rs = psmt.executeQuery();
            //遍历结果集
            while (rs.next()){
                //得到返回的结果值
                int id =  rs.getInt("id");
               String name = rs.getString("user");
               User user = new User();
               user.setId(id);
               user.setUser(name);
               System.out.println(user);

            }

        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try{
                rs.close();
                psmt.close();
                conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }


        }
    }
}
/**
    *@Author: Han Yu
    *@Description: 封装的RowMapper方法
    *@Param:
    *@Return:
    *@Date:   Create in 12:44 2019/1/13

*/
class MyRowMapper implements RowMapper<User>{
    @Override
    public User mapRow(ResultSet resultSet, int num) throws SQLException {
        //从结果集中拿到数据
        int id = resultSet.getInt("id");
        String name = resultSet.getString("user");
        //把数据封装到对象
        User user = new User();
        user.setUser(name);
        user.setId(id);
        return user;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值