java: Plantilla JDBC de primavera

concepto

Una encapsulación simple de JDBC por el marco Spring. Se proporciona un objeto JDBCTemplate para simplificar el desarrollo de JDBC.

paso

  1. importar paquete jar
  2. Cree un objeto JdbcTemplate. Depende de la fuente de datos DataSource
    • JdbcTemplate template = new JdbcTemplate(ds);
  3. Llame al método de JdbcTemplate para completar la operación CRUD
    • actualización (): ejecuta declaraciones DML. agregar, eliminar, cambiar declaración
    • queryForMap(): el resultado de la consulta encapsula el conjunto de resultados como una colección de mapas, usa el nombre de la columna como clave y usa el valor como valor para encapsular este registro como una colección de mapas.
      • Nota: La longitud del conjunto de resultados de esta consulta de método solo puede ser 1
    • queryForList(): el resultado de la consulta encapsula el conjunto de resultados como una colección de listas
      • Nota: encapsule cada registro en una colección de mapas y luego cargue la colección de mapas en la colección de listas
    • query(): consulta resultados, encapsula los resultados como objetos JavaBean
      • parámetros de consulta: RowMapper
        • Generalmente utilizamos la clase de implementación BeanPropertyRowMapper. Puede completar la encapsulación automática de datos en JavaBean.
        • nuevo BeanPropertyRowMapper<tipo>(tipo.clase)
    • queryForObject: consulta resultados, encapsula los resultados como objetos
      • Generalmente se utiliza para consultas de funciones agregadas.

ejemplo

package cn.xxx.jdbctemplate;

import cn.xxx.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * JdbcTemplate入门
 */
public class JdbcTemplateDemo1 {
    
    

    public static void main(String[] args) {
    
    
        //1.导入jar包
        //2.创建JDBCTemplate对象
        JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
        //3.调用方法
        String sql = "update account set balance = 5000 where id = ?";
        int count = template.update(sql, 3);
        System.out.println(count);
    }
}

Prueba unitaria de todas las API

  1. Modificar el salario de los datos No. 1 a 10000
  2. agregar un registro
  3. Eliminar el registro recién agregado
  4. Consulta el registro cuyo id es 1 y encapsúlalo como una colección de mapas.
  5. Consulta todos los registros y encapsulalos como una Lista
  6. Consulta todos los registros y encapsúlalos como una colección de lista de objetos Emp.
  7. Consultar el número total de registros.
package cn.xxx.jdbctemplate;

import cn.xxx.domain.Emp;
import cn.xxx.utils.JDBCUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public class JdbcTemplateDemo2 {
    
    

    //Junit单元测试,可以让方法独立执行


    //1. 获取JDBCTemplate对象
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    /**
     * 1. 修改1号数据的 salary 为 10000
     */
    @Test
    public void test1(){
    
    

        //2. 定义sql
        String sql = "update emp set salary = 10000 where id = 1001";
        //3. 执行sql
        int count = template.update(sql);
        System.out.println(count);
    }

    /**
     * 2. 添加一条记录
     */
    @Test
    public void test2(){
    
    
        String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";
        int count = template.update(sql, 1015, "郭靖", 10);
        System.out.println(count);

    }

    /**
     * 3.删除刚才添加的记录
     */
    @Test
    public void test3(){
    
    
        String sql = "delete from emp where id = ?";
        int count = template.update(sql, 1015);
        System.out.println(count);
    }

    /**
     * 4.查询id为1001的记录,将其封装为Map集合
     * 注意:这个方法查询的结果集长度只能是1
     */
    @Test
    public void test4(){
    
    
        String sql = "select * from emp where id = ? or id = ?";
        Map<String, Object> map = template.queryForMap(sql, 1001,1002);
        System.out.println(map);
        //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}

    }

    /**
     * 5. 查询所有记录,将其封装为List
     */
    @Test
    public void test5(){
    
    
        String sql = "select * from emp";
        List<Map<String, Object>> list = template.queryForList(sql);

        for (Map<String, Object> stringObjectMap : list) {
    
    
            System.out.println(stringObjectMap);
        }
    }

    /**
     * 6. 查询所有记录,将其封装为Emp对象的List集合
     */

    @Test
    public void test6(){
    
    
        String sql = "select * from emp";
        List<Emp> list = template.query(sql, new RowMapper<Emp>() {
    
    

            @Override
            public Emp mapRow(ResultSet rs, int i) throws SQLException {
    
    
                Emp emp = new Emp();
                int id = rs.getInt("id");
                String ename = rs.getString("ename");
                int job_id = rs.getInt("job_id");
                int mgr = rs.getInt("mgr");
                Date joindate = rs.getDate("joindate");
                double salary = rs.getDouble("salary");
                double bonus = rs.getDouble("bonus");
                int dept_id = rs.getInt("dept_id");

                emp.setId(id);
                emp.setEname(ename);
                emp.setJob_id(job_id);
                emp.setMgr(mgr);
                emp.setJoindate(joindate);
                emp.setSalary(salary);
                emp.setBonus(bonus);
                emp.setDept_id(dept_id);

                return emp;
            }
        });


        for (Emp emp : list) {
    
    
            System.out.println(emp);
        }
    }

    /**
     * 6. 查询所有记录,将其封装为Emp对象的List集合
     */

    @Test
    public void test6_2(){
    
    
        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(){
    
    
        String sql = "select count(id) from emp";
        Long total = template.queryForObject(sql, Long.class);
        System.out.println(total);
    }

}

Supongo que te gusta

Origin blog.csdn.net/weixin_43972437/article/details/132385112
Recomendado
Clasificación