spring-boot-route (7) integra la base de datos de operaciones jdbcTemplate

En parte del contenido, aprendimos la preparación de la interfaz Restful y la generación de documentación de la interfaz. Necesitamos almacenar los datos de la interfaz de forma persistente En esta parte, aprendemos principalmente varios marcos persistentes para almacenar datos. En esta sección, usaremos mysql como ejemplo como base de datos de demostración.

Cuando comenzamos a ponernos en contacto con las operaciones de la base de datos, usamos JDBC para las operaciones de la base de datos, pero cada vez que tenemos que crear una conexión, es muy problemático cerrar la conexión. Spring simplemente encapsula JDBC en un nuevo marco: JdbcTemplate.

Construcción del proyecto

1 Agregar dependencia de mysql

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

2. Agregue la dependencia jdbcTemplate

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

3. Configurar mysql

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/simple_fast?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true
    username: root
    password: root

Base de datos de operación simple

Cree una nueva tabla studentpara probar las funciones comunes de JdbcTemplate. La declaración de la tabla es la siguiente:

CREATE TABLE `student` (
   `student_id` int(30) NOT NULL,
   `age` int(1) DEFAULT NULL COMMENT '年龄',
   `name` varchar(45) DEFAULT NULL COMMENT '姓名',
   `sex` int(1) DEFAULT NULL COMMENT '性别:1:男,2:女,0:未知',
   `create_time` datetime DEFAULT NULL COMMENT '创建时间',
   `status` int(1) DEFAULT NULL COMMENT '状态:1:正常,-1:删除',
   PRIMARY KEY (`student_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='学生表'

Las clases de entidad correspondientes son las siguientes:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class StudentBean implements Serializable {

    private static final long serialVersionUID = 4618004018169112427L;

    private Integer studentId;
    private Integer age;
    private String name;
    private Integer sex;
    private Date createTime;
    private Integer status;
}

JdbcTemplate proporciona una API de operación de base de datos relativamente completa. Las API de uso común en el desarrollo diario se dividen principalmente en dos categorías, a saber

  • consulta 与 consultaXXX
  • actualizar 与 batchUpdate

El uso de JdbcTemplate también es muy simple, donde se puede usar la inyección

@Autowired
private JdbcTemplate jdbcTemplate;

1 Consultar una sola entidad

public StudentBean getStudent(int status){
    String sql = "select * from student where status = ? limit 1";
    return jdbcTemplate.queryForObject(sql,new Object[]{status},new BeanPropertyRowMapper<>(StudentBean.class));
}

2 Consultar la colección List

public List<StudentBean> studentBeanList(int status){
    String sql = "select * from student where status = ?";
    return  jdbcTemplate.query(sql,new Object[]{status},new BeanPropertyRowMapper<>(StudentBean.class));
}

3. Eliminar operación

public int deleteStudent(int status){
    String sql = "delete from student where status = 0";
    return jdbcTemplate.update(sql);
}

4. Operación de actualización

public int updateStudent(int studentId,String name){
    String sql = "update student set name = ? where student_id = ?";
    return jdbcTemplate.update(sql,new Object[]{name,studentId});
}

5. Insertar operación

public int addStudent(){
    String sql = "insert into student(student_id,age,name,status) values(?,?,?,?)";
    return jdbcTemplate.update(sql,new Object[]{30,18,"Java旅途",0});
}

6. Inserto a granel

JdbcTemplate proporciona API para la inserción de lotes. Para reducir las operaciones con la base de datos y mejorar la eficiencia de la inserción, los datos que se insertarán se colocan en el búfer en lotes y se insertan varios datos en lotes a la vez.

public int batchAddStudent(){

    // 构造list集合
    List<StudentBean> studentBeanList = new ArrayList<>();
    StudentBean studentBean = new StudentBean(31, 31, "Java旅途", 1, new Date(), 1);
    StudentBean studentBean1 = new StudentBean(32, 32, "javatrip", 1, new Date(), 1);
    studentBeanList.add(studentBean);
    studentBeanList.add(studentBean1);
    String sql = "insert into student values(?,?,?,?,?,?)";

    int[] ints = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException {
            StudentBean student = studentBeanList.get(i);
            ps.setInt(1, student.getStudentId());
            ps.setInt(2, student.getAge());
            ps.setString(3, student.getName());
            ps.setInt(4, student.getSex());
            ps.setDate(5,new java.sql.Date(System.currentTimeMillis()));
            ps.setInt(6, student.getStatus());
        }

        @Override
        public int getBatchSize() {
            return studentBeanList.size();
        }
    });
    return ints.length;
}

Lo anterior solo demuestra algunos ejemplos simples, si necesita un uso más detallado, puede consultar la API oficial de JdbcTemplate. JdbcTemplate es un marco relativamente fácil para principiantes, y también es muy conveniente de usar. Pero hay algunas deficiencias. Codifica sql en código java. Si necesita modificar sql, debe volver a compilar el código java, que no es propicio para el mantenimiento.

Este es el séptimo artículo de la serie spring-boot-route. Los artículos de esta serie son relativamente simples. El objetivo principal es ayudar a los estudiantes que son nuevos en Spring Boot a tener una comprensión sistemática. Este artículo ha sido incluido en mi github , ¡bienvenidos amigos star!

github : https://github.com/binzh303/spring-boot-route

Presta atención, no te pierdas

Si te sientes bien ensayos, atención bienvenida , aprobación , colección , tu apoyo es mi poder creativo, gracias.

Si hay algún problema con la redacción del artículo, no sea tacaño. Deje un mensaje y indíquelo. Lo comprobaré y modificaré a tiempo.

Si quieres conocerme más profundamente, puedes buscar " Java Journey " en WeChat para seguir. Responda " 1024 " para obtener videos de aprendizaje y libros electrónicos exquisitos. Envíe artículos técnicos a tiempo a las 7:30 todos los días, para que no esté solo en su camino al trabajo, y hay actividades mensuales de entrega de libros para ayudarlo a mejorar su poderío.

Supongo que te gusta

Origin blog.51cto.com/14820531/2540264
Recomendado
Clasificación