La aplicación de la anotación, la aceleración del desarrollo de código y no es necesario escribir el archivo de asignación XML.
MYBATIS comúnmente anotado
@Sinsert: Realiza nuevas
@Update: Actualización de implementación
@delete: Implementar eliminar
@select: consulta de implementación
@Result: Los resultados de la realización establecen el paquete
@Results: Puede utilizar el instrumento de @Result, empaquetar varios conjuntos de resultados
@Resultmap: Referencia de implementación @Results paquete definido
@ONE: Implemente un par de paquetes de conjuntos de resultados
@MANY: Implemente un par de paquetes de conjuntos de resultados múltiples
@selectProvider: Implementar la asignación dinámica de SQL
@Cachenamespace: quite el uso de la caché de segundo nivel (Nota Antes de iniciar la memoria caché secundaria antes del nombre de la clase)
Habilitar la memoria caché secundaria debe configurar el tiempo de caché
@CacheNamespace(desalojo = LruCache.class,flushInterval = 60000,size = 1000)
Ingresos y deducción basados en anotaciones
@Selects @Results anotación @Result anotación @ResultMap anotación
@Results anotación Después de la anotación de @ResultMap, puede repetir varias veces, @RESULT anotaciones se incluyen en @RESULTS anotaciones
/**
* Find all students
* @return
*/
@Select({"select * from student_tb"})
@Results(id = "studentMap",value = {@Result(id = true,property = "id",column = "id"),
@Result(property = "name",column = "name"),
@Result(property = "sex",column = "sex"),
@Result(property = "age",column = "age"),
@Result(property = "height",column = "height"),
@Result(property = "birthday",column = "birthday")
})
List<Student> findAllStudent();
/**
* According to the search student
* @param id
* @return
*/
@Select("select * from student_tb where id = #{id}")
/ * Reuse * /
@ResultMap(value = "studentMap")
Student findStudentById(int id);
/**
* Save students
* @param student
*/
@Insert(" insert into student_tb (name,age,sex,height,birthday)values (#{name},#
{age},#{sex},#{height},#{birthday})")
@SelectKey(keyColumn = "id",keyProperty = "id",resultType = Integer.class,before =
false,statement = " select last_insert_id()")
int saveStudent(Student student);
/**
* Delete students
* @param id
* @return
*/
@Delete("delete from student_tb where id = #{id}")
int deleteStudentById(int id);
/**
* Update students
* @param student
* @return
*/
@Update("update student_tb set name=#{name},age=#{age},height=#{height},sex=#
{sex},birthday=#{birthday} where id=#{id}")
int updateStudent(Student student);
/**
* Fuzzy query according to the name
* @param likeName
* @return
*/
@Select(" select * from student_tb where name like #{likeName}")
@ResultType(Student.class)
List<Student> findStudentListByName(String likeName);
Desarrollo de mapas complejos
@Results anotación
en lugar de la etiqueta
Puede utilizar una sola anotación de @Result, también puede utilizar la colección @Result
@Results ({@ resultado (), @Results (@Result ())
anotación @Result
en lugar de etiquetas y etiquetas
Introducción de propiedades de @Result
ID es el campo clave principal
nombre de columna de la base de datos de columnas
La propiedad necesita ser ensamblada nombre de atributo
UN @Result (uno = @ uno ()))
MUCHOS @Many anotación (@Result (muchos = @many ())))))
@One anotación (uno a uno)
en lugar de la etiqueta, es la clave de la consulta ganadora y la subconsulta se devuelve a un único objeto de la anotación.
@One introducción de propiedades de anotación:
SELECT desarrolla SQLMAPper para consultas de varias tablas
fetchtype: el parámetro de configuración global está sobrescribiendo LazyLoadInable,
Uso del formato:
@Result(colum = » «, propiedad = » , uno [email protected](seleccione = «»,fetcheType=»FetcheType.lazy») )
@MANY anotación (uno a mucho)
en lugar de la etiqueta, es la clave de las consultas de varias tablas, en la anotación para especificar las subconsultas devuelven la colección de objetos.
Nota: El elemento de agregación se utiliza para procesar la relación entre «un par» y se requieren las propiedades de la clase de entidad Java asignada. JavatyPE del atributo (el formato general es arraylist) pero no se puede definir en la anotación. ;
Uso del formato:
@Result(property=» «,column = «, many = @Many ( select = » «))
Mapa de un par de relaciones complejas (// En la memoria caché secundaria debe configurar el tiempo de caché
@CacheNamespace(desalojo = LruCache.class,flushInterval = 60000,size = 1000))
Visualización de código
/ / Open the secondary cache must configure the cache time
@CacheNamespace(eviction = LruCache.class,flushInterval = 60000,size = 1000)
//------------------------------------------------
**IStudentDaoIStudentDao**
@ResultType(IStudentDao.class)
Student findAllStudentById(int id);
//------------------------------------------------
**ScoreDao**
@Select(" select * from Score ")
@Results(id = "ScoreMap1",value = {
@Result(id = true,property = "scoreid",column = "scoreid"),
@Result(property = "coursename",column = "coursename"),
@Result(property = "score",column = "score"),
@Result(property ="student",column = "studentid",one = @One(select = "" +
"com.aaa.dao.IStudentDao.findAllStudentById",fetchType = FetchType.LAZY))
})
List<Score> findAllScoreWithStudentOne();
Mapa de relación multi-compleja
/ / Open the secondary cache must configure the cache time
@CacheNamespace(eviction = LruCache.class,flushInterval = 60000,size = 1000)
//------------------------------------------------
**ScoreDao**
@ResultType(Score.class)
Score findScoreById(int studentid);
//------------------------------------------------
**IStudentDao**
@Select(" select * from student")
@Results(id = "studentMap2",value = {@Result(id = true,property = "id",column = "id"),
@Result(property = "sex",column = "sex"),
@Result(property = "height",column = "height"),
@Result(property = "name",column = "name"),
@Result(property = "age",column = "age"),
@Result(property = "scoreList",column = "id",many = @Many(select =
"com.aaa.dao.ScoreDao.findScoreById",fetchType =
FetchType.LAZY))
})
List<Student> findStudentWithScoreLazy();
.