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
-
Las anotaciones se implementan en la interfaz.
-
Necesita vincular la interfaz en el archivo mybatis-config.xml
<!--每一个mapper.xml都需要在mybatis核心配置文件中进行注册,进行映射--> <mappers> <mapper resource="com/kuber/dao/UserMapper.xml"/> </mappers>
-
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(); }
-
Use Debug para ver la esencia
-
Utiliza esencialmente el mecanismo de proxy dinámico de jvm
-
Proceso de ejecución detallado de Mybatis
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);
}
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:
-
Instale el complemento de lombok en idea (reinicie la idea)
-
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>
-
Anotar la clase de entidad