Ochenta, agente DAO del framework MyBatis

Directorio de artículos

El proxy DAO implementa operaciones de base de datos

tipo de parámetro

un parámetro sencillo

Usar @Param

público objetivo del usuario


El proxy DAO implementa operaciones de base de datos

1. Eliminar la clase de implementación de la interfaz Dao

2. getMapper obtiene el objeto proxy

Simplemente llame al método getMapper() de SqlSession para obtener el objeto de clase de implementación de la interfaz especificada. El parámetro de este método es el valor de clase de la clase de interfaz Dao especificada.

SqlSession session = factory.openSession();
StudentDao dao = session.getMapper(StudentDao.class);

Usar herramientas

StudentDao studentDao = 
MyBatisUtil.getSqlSession().getMapper(StudentDao.class);

El objeto creado por getMapper() es la clase StudentDaoImpl que creamos en lugar de nosotros mismos

3. Use el método de objeto de proxy Dao para ejecutar la instrucción sql

seleccione el método para consultar

@Test
public void testSelect() throws IOException {
 final List<Student> studentList = studentDao.selectStudents();
 studentList.forEach( stu -> System.out.println(stu));
}

método de inserción para insertar

@Test
public void testInsert() throws IOException {
 Student student = new Student();
 student.setId(1006);
 student.setName("林浩");
 student.setEmail("[email protected]");
 student.setAge(26);
 int nums = studentDao.insertStudent(student);
 System.out.println("使用 Dao 添加数据:"+nums);
}

4. Comprensión profunda de los parámetros

Pase parámetros al archivo mapper.xml desde el código Java.

tipo de parámetro

parámetroType: el tipo del parámetro de método en la interfaz, el nombre completo o el alias del tipo. Esta propiedad es opcional porque MyBatis puede inferir los parámetros de la declaración entrante específica y el valor predeterminado no está establecido. Los parámetros del método en la interfaz se pasan del código java a la instrucción sql del archivo del mapeador.

  • int o java.lang.Integer
  • hashmap java.util.HashMap
  • lista o java.util.ArrayList
  • estudiante o com.bjpowernode.dominio.Estudiante

<seleccionar>, <insertar>, <actualizar>, <eliminar> pueden usar el tipo de parámetro para especificar el tipo.

p.ej:

<delete id="deleteStudent" parameterType="int">
 delete from student where id=#{studentId}
</delete>
等同于
<delete id="deleteStudent" parameterType="java.lang.Integer">
 delete from student where id=#{studentId}
</delete>

un parámetro sencillo

Los parámetros del método en la interfaz de Dao tienen solo un tipo simple (tipo básico de Java y String), el marcador de posición #{cualquier carácter}, que no tiene nada que ver con el nombre del parámetro del método.

método de interfaz

Student selectById(int id);

archivo del asignador

<select id="selectById" resultType="com.bjpowernode.domain.Student">
 select id,name,email,age from student where id=#{studentId}
</select>

#{studentId} , studentId es un nombre de variable personalizado, no relacionado con el nombre del parámetro del método.

método de prueba

@Test
public void testSelectById(){
 //一个参数 
 Student student = studentDao.selectById(1005);
 System.out.println("查询 id 是 1005 的学生:"+student);
}

Usar @Param

Cuando el método de interfaz Dao tiene varios parámetros, los parámetros deben usarse por nombre. Agregue @Param("nombre del parámetro personalizado") delante del parámetro del método y use #{nombre del parámetro personalizado} en el archivo del asignador.

例如定义 List<Student> selectStudent( @Param(“personName”) 
String name ) { … } 
mapper 文件 select * from student where name = 
#{ personName}

método de interfaz

List<Student> selectMultiParam(@Param("personName") String name,
 @Param("personAge") int age);

Archivo de mapeador

<select id="selectMultiParam" resultType="com.bjpowernode.domain.Student">
 select id,name,email,age from student where name=#{personName} or age 
=#{personAge}
</select>

método de prueba

@Test
public void testSelectMultiParam(){
 List<Student> stuList = studentDao.selectMultiParam("李力",20);
 stuList.forEach( stu -> System.out.println(stu));
}

público objetivo del usuario

Use el objeto java para pasar parámetros, el valor del atributo de java es el valor del parámetro requerido por sql. Cada propiedad es un parámetro.

Formato de sintaxis: #{ propiedad,javaType=java en el nombre del tipo de datos

jdbcType=nombre del tipo de datos} javaType, MyBatis puede detectar el tipo de jdbcType y, por lo general, no es necesario configurarlo. Formato común #{propiedad}

 Cree un objeto QueryParam que contenga valores de parámetros

package com.bjpowernode.vo; 
public class QueryParam {
 private String queryName;
 private int queryAge;
 //set ,get 方法
}

método de interfaz

List<Student> selectMultiObject(QueryParam queryParam);

Archivo de mapeador

<select id="selectMultiObject" resultType="com.bjpowernode.domain.Student">
 select id,name,email,age from student where name=#{queryName} or age 
=#{queryAge}
</select>
或
<select id="selectMultiObject" resultType="com.bjpowernode.domain.Student">
 select id,name,email,age from student
 where name=#{queryName,javaType=string,jdbcType=VARCHAR}
 or age =#{queryAge,javaType=int,jdbcType=INTEGER}
</select>

método de prueba

@Test
public void selectMultiObject(){
 QueryParam qp = new QueryParam();
 qp.setQueryName("李力");
 qp.setQueryAge(20);
 List<Student> stuList = studentDao.selectMultiObject(qp);
 stuList.forEach( stu -> System.out.println(stu));
}


Supongo que te gusta

Origin blog.csdn.net/m0_54925305/article/details/123487142
Recomendado
Clasificación