荐 MyBatis基于注解的开发
注解的应用,加速度了代码开发的速度,并且不用去写xml映射文件.
mybatis常用注解
@Insert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result 仪器使用,封装多个结果集
@ResultMap:实现引用@Results 定义的封装
@One: 实现一对一结果集封装
@Many:实现一对多结果集封装
@SelectProvider: 实现动态SQL映射
@CacheNamespace:实现注解二级缓存的使用(注释启动二级缓存要放到类名之前)
// 开启二级缓存 必须配置缓存 时间
@CacheNamespace(eviction = LruCache.class,flushInterval = 60000,size = 1000)
基于注解的增删改查
@Select注解 @Results注解 @Result注解 @ResultMap注解
@Results注解被@ResultMap注解标示后可以多次重复利用,@Result注解被包含在@Results注解之中
/**
* 查找所有学生
* @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();
/**
* 根据 查询学生
* @param id
* @return
*/
@Select("select * from student_tb where id = #{id}")
/*重用*/
@ResultMap(value = "studentMap")
Student findStudentById(int id);
/**
* 保存学生
* @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);
/**
* 删除学生
* @param id
* @return
*/
@Delete("delete from student_tb where id = #{id}")
int deleteStudentById(int id);
/**
* 更新学生
* @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);
/**
* 根据名称模糊查询
* @param likeName
* @return
*/
@Select(" select * from student_tb where name like #{likeName}")
@ResultType(Student.class)
List<Student> findStudentListByName(String likeName);
复杂的映射开发
@Results 注解
代替的是标签
该注解中可以以使用单个@Result 注解 ,也可以使用@Result集合
@Results({@Result(),@Result()}) 或者 @Results(@Result())
@Result 注解
代替了 标签和标签
@Result 中属性介绍
id 是否是主键字段
column 数据库的列名
property 需要装配的属性名
one 需要使用的@One 注解 (@Result(one =@One()))
many 需要使用的@Many 注解(@Result (many = @Many()))
@One 注解(一对一)
代替了 标签,是夺标查询的关键,在注解中来制定子查询返回单一对象.
@One 注解属性介绍:
select 制定用来多表查询的 sqlmapper
fetchType : 会覆盖全局的配置参数 lazyLoadingEnabled,
使用格式:
@Result(colum = " " , property = " " , one =@One(select = “”,fetcheType=“FetcheType.lazy”) )
@Many 注解(一对多)
代替了标签,是多表查询的关键,在注解中用来指定子查询返回对象集合.
注意: 聚集元素用来处理"一对多" 的关系,需要指定映射的 Java 实体类的属性,属性的javaType(一般格式为 ArrayList) 但是注解中可以不定义;
使用格式:
@Result(property=" ",column = " ", many = @Many ( select = " "))
一对一复杂关系的映射(// 开启二级缓存 必须配置缓存 时间
@CacheNamespace(eviction = LruCache.class,flushInterval = 60000,size = 1000))
代码展示
// 开启二级缓存 必须配置缓存 时间
@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();
一对多复杂关系的映射
// 开启二级缓存 必须配置缓存 时间
@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();
本文地址:https://blog.csdn.net/nnnnnnnnnnii/article/details/107324522
上一篇: orcl创建定时任务,定时新增,删除数据
下一篇: MySQL修改root密码的多种方法
推荐阅读
-
python开发之基于thread线程搜索本地文件的方法
-
基于Java注解(Annotation)的自定义注解入门介绍
-
基于Java 注解(Annotation)的基本概念详解
-
Android开发基于Drawable实现圆角矩形的方法
-
Android开发之基于DialogFragment创建对话框的方法示例
-
基于Oracle的面向对象技术入门基础简析开发者网络Oracle
-
基于Oracle的高性能动态SQL程序开发
-
EpiiAdmin 开源的php交互性管理后台框架, 让复杂的交互变得更简单!Phper快速搭建交互性平台的开发框架,基于Thinkphp5.1+Adminlte3.0+Require.js。
-
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
-
基于Android开发支持表情的实现详解