8. Desarrollo mediante anotaciones
8.1 Desarrollo orientado a la interfaz
tres facetas de la diferencia
Orientado a objetos significa que cuando consideramos un problema, tomamos el objeto como una unidad y consideramos sus propiedades y métodos;
Orientado a procesos significa que cuando consideramos un problema, tomamos un proceso específico (proceso comercial) como una unidad y consideramos su realización;
El diseño de interfaz y el diseño que no es de interfaz son para la tecnología de reutilización, y la orientación a objetos (proceso) no es un problema, sino que se refleja más en la arquitectura general del sistema;
8.2 Desarrollo usando anotaciones
1. Las anotaciones se implementan en las interfaces.
@Select("select * from mybatis.user")
List<User> getUsers();
2. Vinculación en el archivo de configuración central
<!--绑定接口-->
<mappers>
<mapper class="com.jiang.mapper.UserMapper"></mapper>
</mappers>
3. prueba
public class UserMapperTest {
@Test
public void test(){
SqlSession sqlSesssion = MybatisUtils.getSqlSesssion();
//底层主要应用反射
UserMapper mapper = sqlSesssion.getMapper(UserMapper.class);
List<User> users = mapper.getUsers();
for (User user: users
) {
System.out.println(user);
}
sqlSesssion.close();
}
Esencia: implementación del mecanismo de reflexión
Capa inferior: proxy dinámico
Proceso de ejecución detallado de Mybatis
8.3 CRUD
Podemos confirmar transacciones automáticamente cuando se crea la clase de herramienta
@Test
public void test(){
SqlSession sqlSesssion = MybatisUtils.getSqlSesssion();
//底层主要应用反射
UserMapper mapper = sqlSesssion.getMapper(UserMapper.class);
/* User user = mapper.getUserById(1);
System.out.println(user);*/
/*for (User user: users
) {
System.out.println(user);
}*/
mapper.addUser(new User(5,"youyou","123123"));
sqlSesssion.close();
}
@Select("select * from mybatis.user")
List<User> getUsers();
//方法存在多个参数,所有的参数前面必须加上@Param
@Select("select * from user where id=#{id}")
User getUserById(@Param("id") int id);
@Insert("insert into user(id,name,pwd)values(#{id},#{name},#{password})")
int addUser(User user);
<!--绑定接口-->
<mappers>
<mapper class="com.jiang.mapper.UserMapper"></mapper>
</mappers>
Acerca de la anotación @Param()
- Es necesario agregar parámetros de tipo básico o tipo String
- Los tipos de referencia no necesitan agregar
- Si solo hay un tipo básico, se puede ignorar, pero se recomienda que todos lo agreguen
- A lo que nos referimos en SQL es el nombre del atributo establecido en nuestro @Param() aquí
#{} y ${}
#Hay un significado precompilado para evitar la inyección de SQL
https://www.bilibili.com/video/BV1NE411Q7Nx?p=19&spm_id_from=pageDriver