MyBatis [desarrollado usando anotaciones]

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

Supongo que te gusta

Origin blog.csdn.net/qq_48108092/article/details/124168650
Recomendado
Clasificación