[6] Mybatis usa anotaciones, uso de complementos de Lombok

8. Utilice el desarrollo de anotaciones

8.1, programación orientada a la interfaz

  • He aprendido programación e interfaces orientadas a objetos antes, pero en el desarrollo real, muchas veces elegiremos programación orientada a interfaces.
  • La causa raíz: desacoplamiento, extensibilidad, reutilización mejorada, desarrollo en capas, la capa superior no se preocupa por la implementación específica, todos cumplen con el estándar común, lo que hace que el desarrollo sea más fácil y estandarizado.
  • En un sistema orientado a objetos, las diversas funciones del sistema se completan mediante la cooperación de muchos objetos diferentes. En este caso, cómo se implementa cada objeto no es tan importante para el diseñador del sistema;
  • La relación de colaboración entre varios objetos se ha convertido en la clave del diseño del sistema. Al comienzo del diseño del sistema, la comunicación entre los diferentes tipos y la interacción entre los módulos son consideraciones importantes, que también es el contenido de trabajo principal del diseño del sistema. La programación orientada a interfaces se refiere a la programación de acuerdo con esta idea.

Comprensión de la interfaz

  • Desde una comprensión más profunda de la interfaz, debería ser la separación de la definición (estándares, restricciones) y la implementación (el principio de separación de nombre y realidad).

  • La propia interfaz refleja la comprensión abstracta del sistema por parte del diseñador del sistema.

  • Debería haber dos tipos de interfaces:

    • La primera categoría es la abstracción de un individuo, que puede corresponder a una clase abstracta;
    • La segunda categoría es la abstracción de cierto aspecto de un individuo, es decir, formando una superficie abstracta (interfaz);
  • Un cuerpo puede tener múltiples caras abstractas. Existe una diferencia entre cuerpo abstracto y superficie abstracta.

Tres aspectos de la diferencia

  • Orientado a objetos significa que cuando consideramos el problema, tomamos el objeto como la unidad y consideramos sus propiedades y métodos.
  • Orientado al proceso significa que cuando consideramos un problema, tomamos un proceso específico (proceso de transacción) como una unidad y consideramos su realización.
  • El diseño de interfaz y el diseño sin interfaz son para tecnología de reutilización, y la orientación a objetos (proceso) no es un problema. La mayor manifestación es la arquitectura general del sistema

8.2.Desarrollo mediante anotaciones

  1. Las anotaciones se implementan en la interfaz.

  2. Necesita vincular la interfaz en el archivo mybatis-config.xml

        <!--每一个mapper.xml都需要在mybatis核心配置文件中进行注册,进行映射-->
        <mappers>
            <mapper resource="com/kuber/dao/UserMapper.xml"/>
        </mappers>
    
  3. Prueba de uso

        @Test
        public void getAllUser(){
          
          
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            //底层主要应用反射
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = mapper.getAllUser();
            for (User user : users) {
          
          
                System.out.println(user);
            }
            sqlSession.close();
        }
    
  4. Use Debug para ver la esencia

    Inserte la descripción de la imagen aquí

  5. Utiliza esencialmente el mecanismo de proxy dinámico de jvm

    Inserte la descripción de la imagen aquí

  6. Proceso de ejecución detallado de Mybatis

    Inserte la descripción de la imagen aquí

Esencia: Implementación del mecanismo de reflexión.

Capa inferior: proxy dinámico

8.3. Anotación para realizar CRUD

La transacción se puede confirmar automáticamente cuando se crea la clase de herramienta, de la siguiente manera

    public static SqlSession getSqlSession(){
    
    
        return sqlSessionFactory.openSession(true);
    }

Inserte la descripción de la imagen aquí

Preguntar

Se puede implementar en el método de interfaz.

    @Select("select * from users where uid = #{uid}")
    User getUserByID(@Param("uid") int id);

La categoría de prueba ya no se muestra

insertar

    @Insert("insert into users values(null,#{username},#{password})")
    int addUser(User user);

Eliminar

    @Delete("delete from users where uid = #{uid}")
    int deleteUserByID(@Param("uid") int id);

modificar

    @Update("update users set username = #{username},password = #{password} where uid = #{uid}")
    int updateUser(User user);

8.4. Acerca de @Param

La anotación @Param se usa para dar un nombre al parámetro del método. El siguiente es un resumen de los principios de uso:

  • Cuando el método solo acepta un parámetro, se puede omitir @Param.
  • Cuando el método acepta varios parámetros, se recomienda utilizar la anotación @Param para nombrar los parámetros.
  • Si el parámetro es un JavaBean, no se puede utilizar @Param.
  • Cuando no se usa la anotación @Param, solo puede haber un parámetro, y es un Javabean.

8.5, la diferencia entre # y $

  • La función de # {} es principalmente reemplazar los marcadores de posición en PrepareStatement? [Uso recomendado]

    INSERT INTO user (name) VALUES (#{name});
    INSERT INTO user (name) VALUES (?);
    
  • La función de $ {} es reemplazar cadenas directamente

    INSERT INTO user (name) VALUES ('${name}');
    INSERT INTO user (name) VALUES ('kuangshen');
    

9 、 Lombok

Pasos de uso:

  1. Instale el complemento de lombok en idea (reinicie la idea)

  2. Importe el paquete jar en lombok al proyecto (maven va directamente al almacén de maven para encontrar las coordenadas)

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.12</version>
                <scope>provided</scope>
            </dependency>
    
  3. Anotar la clase de entidad

Supongo que te gusta

Origin blog.csdn.net/weixin_43215322/article/details/109565142
Recomendado
Clasificación