• Java-Spring JDBC初体验操作数据库


    Spring JDBC

    * Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发
    

    步骤

    1. 导入jar包
    2. 创建JDBCTemplate对象,依赖于数据源DataSource
      • JdbcTemplate template=new JdbcTemplate(datasource);
    3. 调用JDBCTemplate的方法来完成CRUD的操作
      • update():执行DML语句。增删查改
      • queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
        • 注意:查询结果集长度只能为1
      • queryForList():查询结果将结果集封装为list集合
        • 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
      • query():查询结果,将结果封装为JavaBean对象
        • query的参数:RowMapper
          • 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
          • new BeanPropertyRowMapper<类型>(类型.class)
      • queryForObject():查询结果,将结果封装为对象
        • 一般用于聚合函数

    代码如下

    package cn.itcast.jdbctemplate;
    
    import cn.itcast.utils.JDBCUtils;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    public class JdbcTemplateDemo1 {
        public static void main(String[] args){
            //导入jar包
            //创建JdbcTemplate对象
            JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
            //调用方法
            String sql="update account set balance=2000 where id=?";
            int count =template.update(sql,3);
            System.out.println(count);
        }
    }
    

    练习

    需求

    1.修改1号数据的salary为10000
    2.添加一条数据
    3.删除刚才添加的记录
    4.查询id为1的记录,将其封装为Map集合  
    5.查询所有记录,将其封装为List
    6.查询所有记录,将其封装为Emp对象的List集合
    7.查询总记录数
    

    代码如下

    package cn.itcast.jdbctemplate;
    
    import cn.itcast.domain.Emp;
    import cn.itcast.utils.JDBCUtils;
    import org.junit.jupiter.api.Test;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    public class JdbcTemplateDemo2 {
        //Junit单元测试 可以让方法独立执行
        // 1.修改1号数据的salary为10000
        //创建JdbcTemplate对象
        private JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
        @Test
        public  void test1(){
            //导入jar包
    
            //调用方法
            String sql="update emp set sarlary=10000 where id=?";
            int count =template.update(sql,1001);
            System.out.println(count);
        }
        // 2.添加一条数据
        @Test
        public  void test2(){
            //导入jar包
    
            //调用方法
            String sql="insert into emp(id,ename,dept_id)  values(?,?,?)";
            int count =template.update(sql,1015,"guoj",10);
            System.out.println(count);
        }
        // 3.删除刚才添加的记录
        @Test
        public  void test3(){
            //导入jar包
    
            //调用方法
            String sql="delete from emp where id=?";
            int count =template.update(sql,1015);
            System.out.println(count);
        }
        // 4.查询id为1005的记录,将其封装为Map集合
        //查询结果集长度只能为1
        @Test
        public  void test4(){
            //导入jar包
    
            //调用方法
            String sql="select * from emp where id=?";
            Map<String,Object> map =template.queryForMap(sql,1001);
            System.out.println(map);
        }
        // 5.查询所有记录,将其封装为List
        @Test
        public  void test5(){
            //导入jar包
    
            //调用方法
            String sql="select * from emp where id=? or id=?";
        List<Map<String,Object>> list=template.queryForList(sql,1001,1002);
        for (Map<String,Object> stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    
        }
        // 6.查询所有记录,将其封装为Emp对象的List集合
        @Test
        public  void test6(){
            //导入jar包
    
            //调用方法
            String sql="select * from emp ";
            List<Emp> list=template.query(sql, new RowMapper<Emp>() {
    
                @Override
                public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
    
                    int id=resultSet.getInt("id");
                    String ename=resultSet.getString("ename");
                    int job_id=resultSet.getInt("job_id");
                    int mgr=resultSet.getInt("mgr");
                    Date joindate=resultSet.getDate("joindate");
                    double salary=resultSet.getDouble("sarlary");
                    double bonus=resultSet.getDouble("bonus");
                    int dept_id=resultSet.getInt("dept_id");
                    Emp emp=new Emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id);
    
                    return emp;
                }
            });
        for (Emp emp:list){
            System.out.println(emp);
        }
    
        }
        // 6.查询所有记录,将其封装为Emp对象的List集合
        @Test
        public  void test6_2(){
            //导入jar包
    
            //调用方法
            String sql="select * from emp ";
            List<Emp> list=template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
            for (Emp emp:list){
                System.out.println(emp);
            }
    
        }
        // 7.查询总记录数
        @Test
        public  void test7(){
            //导入jar包
    
            //调用方法
            String sql="SELECT COUNT(id) FROM emp";
        Long total=template.queryForObject(sql,Long.class);
            System.out.println(total);
        }
    }
  • 相关阅读:
    Java——数组
    Java——控制循环结构
    脏检查
    Session跟SessionFactory的线程安全与非安全
    脏检查and刷新机构
    oracle函数
    多线程下单列模式
    多线程
    线程同步
    文件上传功能的实现
  • 原文地址:https://www.cnblogs.com/dongxuelove/p/13034869.html
Copyright © 2020-2023  润新知