[Mybatis desde la entrada hasta el tutorial de combate real] Capítulo 10 Desarrollo de anotaciones de Mybatis

10. Desarrollo de anotaciones Mybatis

10.1 ¿Qué es el desarrollo de anotaciones?

    La información de configuración inicial de Mybatis se basa en XML y la declaración de asignación (SQL) también se define en XML. Y para MyBatis 3 proporciona una nueva configuración basada en anotaciones. El uso del método de desarrollo de anotaciones puede reducir la necesidad de escribir archivos de mapeo de Mapper.

10.2 Anotaciones de uso común

anotación describir
@Insertar Nueva configuración
@Actualizar actualización de configuración
@Borrar eliminación de configuración
@Seleccionar consulta de configuración
@Opciones Configurar la devolución de la clave principal, desactivar la caché secundaria y otras funciones
@Resultado encapsulación del conjunto de resultados
@Resultados Úselo con @Result para encapsular múltiples conjuntos de resultados
@ResultMap Se refiere al paquete definido por @Results
@Uno Encapsulación de conjuntos de resultados uno a uno
@Muchos Encapsulación de conjunto de resultados de uno a muchos
@Seleccionarproveedor Asignación de SQL dinámico
@CacheNamespace caché L2
@Param Introduzca varios parámetros
@Mapeador Dale al mapeador DAO a la gestión de Spring e intégralo con

10.3 Clases de entidades

10.3.1 Clase de departamento

public class Dept {

    private Integer deptno;
    private String dname;
    private String loc;

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }

    public String getLoc() {
        return loc;
    }

    public void setLoc(String loc) {
        this.loc = loc;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }
}

10.3.2 Clase de empleado

public class Emp {

    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double sal;
    private Double comm;
    private Integer deptno;
    private Dept dept;

    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Integer getMgr() {
        return mgr;
    }

    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }

    public Date getHiredate() {
        return hiredate;
    }

    public void setHiredate(Date hiredate) {
        this.hiredate = hiredate;
    }

    public Double getSal() {
        return sal;
    }

    public void setSal(Double sal) {
        this.sal = sal;
    }

    public Double getComm() {
        return comm;
    }

    public void setComm(Double comm) {
        this.comm = comm;
    }

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "empno=" + empno +
                ", ename='" + ename + '\'' +
                ", job='" + job + '\'' +
                ", mgr=" + mgr +
                ", hiredate=" + hiredate +
                ", sal=" + sal +
                ", comm=" + comm +
                ", deptno=" + deptno +
                ", dept=" + dept +
                '}';
    }
}

10.4 Adición, eliminación, modificación y diferencia de una sola tabla

Interfaz del mapeador 10.4.1

public interface DeptMapper {
    @Select("select deptno,dname,loc from dept")
    List<Dept> select();

    @Select("select deptno,dname,loc from dept where deptno = #{deptno}")
    Dept selectById(Integer deptno);

    @Insert("insert into dept(dname,loc) values (#{dname}, #{loc})")
    @Options(useGeneratedKeys = true, keyProperty = "deptno", keyColumn = "deptno")
    void insert(Dept dept);

    @Update("update dept set dname = #{dname},loc=#{loc} where deptno = #{deptno}")
    void update(Dept dept);

    @Delete("delete from dept where deptno=#{deptno}")
    void delete(Integer deptno);
}

10.4.2 Pruebas

public class AnnotationTest {

    @Test
    public void testSelect() {
        SqlSession sqlSession = MybatisUtil.getSession();

        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        List<Dept> list = deptMapper.select();
        for (Dept dept : list) {
            System.out.println(dept);
        }

        sqlSession.close();
    }

    @Test
    public void testSelectById() {
        SqlSession sqlSession = MybatisUtil.getSession();

        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept = deptMapper.selectById(10);
        System.out.println(dept);

        sqlSession.close();
    }

    @Test
    public void testInsert() {
        SqlSession sqlSession = MybatisUtil.getSession();

        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept = new Dept();
        dept.setDname("aa");
        dept.setLoc("aa");
        deptMapper.insert(dept);
        sqlSession.commit();
        System.out.println("主键:" + dept.getDeptno());

        sqlSession.close();
    }

    @Test
    public void testUpdate() {
        SqlSession sqlSession = MybatisUtil.getSession();

        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        Dept dept = new Dept();
        dept.setDeptno(41);
        dept.setDname("bb");
        dept.setLoc("bb");
        deptMapper.update(dept);
        sqlSession.commit();

        sqlSession.close();
    }

    @Test
    public void testDelete() {
        SqlSession sqlSession = MybatisUtil.getSession();

        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        deptMapper.delete(41);
        sqlSession.commit();

        sqlSession.close();
    }
}

10.5 Mapeo de relaciones uno a uno

Interfaz del mapeador 10.5.1

public interface EmpMapper {
    /*
     * 手动映射resultMap标签
     * @Results + @Result注解替代
     * @Results = resultMap标签
     * @Result = resultMap标签的子标签id和result
     */
    @Select("select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp")
    @Results(id = "selectResultMap",
             value = {
                 @Result(id = true, column = "empno", property = "empno"),
                 @Result(column = "ename", property = "ename"),
                 @Result(column = "job", property = "job"),
                 @Result(column = "mgr", property = "mgr"),
                 @Result(column = "hiredate", property = "hiredate"),
                 @Result(column = "sal", property = "sal"),
                 @Result(column = "comm", property = "comm"),
                 @Result(column = "deptno", property = "deptno"),
                 @Result(column = "deptno", property = "dept", javaType = Dept.class,
                         one = @One(select = "com.newcapec.dao.DeptDao.selectById", fetchType = FetchType.LAZY))
             })
    List<Emp> select();

    @Select("select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp where empno=#{empno}")
    @ResultMap("selectResultMap")
    Emp selectById(Integer empno);
}

10.5.2 Pruebas

@Test
public void testSelectEmp() {
    SqlSession sqlSession = MybatisUtil.getSession();

    EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);

    List<Emp> empList = empMapper.select();
    for (Emp emp : empList) {
        System.out.println(emp);
    }
    sqlSession.close();
}

@Test
public void testSelectEmpById() {
    SqlSession sqlSession = MybatisUtil.getSession();

    EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);

    Emp emp = empMapper.selectById(7369);
    System.out.println(emp);
    sqlSession.close();
}

Supongo que te gusta

Origin blog.csdn.net/ligonglanyuan/article/details/124442980
Recomendado
Clasificación