Mybatis常用的注解
Mybatis常用的注解
MyBatis的常用注解以及简单使用
1.普通映射
@Select("select * from mybatis_Student where id=#{id}")
public Student getStudent(int id);
@Insert("insert into mybatis_Student (name, age, remark, pic,grade_id,address_id) values (#{name},#{age},#{remark}, #{pic},#{grade.id},#{address.id})")
public int insert(Student student);
@Update("update mybatis_Student set name=#{name},age=#{age} where id=#{id}")
public int update(Student student);
@Delete("delete from mybatis_Student where id=#{id}")
public int delete(int id);
2.结果集映射
@Select("select * from mybatis_Student")
@Results({ @Result(id=true,property="id",column="id"), @Result(property="name",column="name"), @Result(property="age",column="age")
})
public List<Student> getAllStudents();
3.关系映射
1)一对一
@Select("select * from mybatis_Student")
@Results({ @Result(id=true,property="id",column="id"), @Result(property="name",column="name"), @Result(property="age",column="age"), @Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress"))
})
public List<Student> getAllStudents();
2)一对多
package com.skymr.mybatis.mappers; import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select; import com.skymr.mybatis.model.Grade; public interface Grade2Mapper { @Select("select * from mybatis_grade where id=#{id}") @Results({ @Result(id=true,column="id",property="id"), @Result(column="grade_name",property="gradeName"), @Result(property="students",column="id",many=@Many(select="com.skymr.mybatis.mappers.Student2Mapper.getStudentsByGradeId")) }) public Grade getGrade(int id);
}
package com.skymr.mybatis.mappers; import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.skymr.mybatis.model.Student; public interface Student2Mapper { @Select("select * from mybatis_Student where id=#{id}") public Student getStudent(int id); @Insert("insert into mybatis_Student (name, age, remark, pic,grade_id,address_id) values (#{name},#{age},#{remark}, #{pic},#{grade.id},#{address.id})") public int insert(Student student); @Update("update mybatis_Student set name=#{name},age=#{age} where id=#{id}") public int update(Student student); @Delete("delete from mybatis_Student where id=#{id}") public int delete(int id); @Select("select * from mybatis_Student") @Results({ @Result(id=true,property="id",column="id"), @Result(property="name",column="name"), @Result(property="age",column="age"), @Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress")) }) public List<Student> getAllStudents(); @Select("select * from mybatis_Student where grade_id=#{gradeId}") @Results({ @Result(id=true,property="id",column="id"), @Result(property="name",column="name"), @Result(property="age",column="age"), @Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress")) }) public List<Student> getStudentsByGradeId(int gradeId);
}
4.动态sql注解映射
provider类
package com.skymr.mybatis.mappers.provider; import java.util.Map;
import org.apache.ibatis.jdbc.SQL;
import com.skymr.mybatis.model.Student; public class StudentDynaSqlProvider { public String insertStudent(final Student student){ return new SQL(){ { INSERT_INTO("mybatis_Student"); if(student.getName() != null){ VALUES("name","#{name}"); } if(student.getAge() > 0){ VALUES("age","#{age}"); } } }.toString(); } public String updateStudent(final Student student){ return new SQL(){ { UPDATE("mybatis_Student"); if(student.getName() != null){ SET("name=#{name}"); } if(student.getAge() > 0){ SET("age=#{age}"); } WHERE("id=#{id}"); } }.toString(); } public String getStudent(final Map<String,Object> map){ return new SQL(){ { SELECT("*"); FROM("mybatis_Student"); if(map.containsKey("name")){ WHERE("name like #{name}"); } if(map.containsKey("age")){ WHERE("age=#{age}"); } } }.toString(); } public String deleteStudent(){ return new SQL(){ { DELETE_FROM("mybatis_Student"); WHERE("id=#{id}"); } }.toString(); }
}
Mapper接口
@SelectProvider(type=StudentDynaSqlProvider.class,method="getStudent")
public List<Student> getStudents(Map<String,Object> map);
结语
这是我总结的mybatis常用的注解,这些注解相对简单。以后我每天都会写一篇博客。
Mybatis常用的注解相关推荐
- MyBatis-学习笔记04【04.自定义Mybatis框架基于注解开发】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- mybatis java类注解式_mybatis注解详解
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html mybatis的原身是ibatis,现在已经脱离了apache基金会,新官网是http://ww ...
- MyBatis 常用标签简单总结
MyBatis 常用标签简单总结 if 标签:类似于 Java 中的 if 语句 where标签:根据查询条件是否存在,来决定是否生成 where 字符串 set标签:根据查询条件是否存在,来决定是否 ...
- Mybatis常见的注解
当下,注解非常流行,以前很长篇的代码,现在基本上一个注解就能搞定. 那,在Mybatis中又有哪些注解呢? Mybatis中的注解基本上都在org.apache.ibatis.annotations目 ...
- [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解
模板布局 公共部分通常定义为模板布局:如页眉,页脚,公共导航栏.菜单等. 模板布局定义方法 布局页中用 th:fragment 定义模板片段,其他页面用 th:insert 引用片段 例如:foote ...
- mybatis常用标签和动态查询
这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: [mybatis ...
- Springmvc的handler method参数绑定常用的注解
转自:http://blog.longjiazuo.com/archives/1149 1. 简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为 ...
- (转)mybatis常用jdbcType数据类型
阅读目录 1 MyBatis 通过包含的jdbcType类型 2 Mybatis中javaType和jdbcType对应和CRUD例子 3 Mybatis中javaType和jdbcType对应关系 ...
- spingboot和mybatis,纯注解方式
文章目录 spingboot和mybatis整合 纯注解方式,不使用xml 1. 创建数据库 2. 建立工程,spring initizer: web + jbdc + mysql + mybatis ...
最新文章
- linux kernel内存回收机制
- C++ Time类重载运算符
- Linux下首次操作MySQL失败
- python——迭代器
- CSDN博客代码块代码没有高亮颜色解决办法
- 逆向工程核心原理读书笔记-API钩取之IE浏览器连接控制
- 老男孩教育50期左婷婷-day03-xhell连接服务器-远程连接排错-基础命令
- 干掉勒索病毒的22岁程序员自曝黑历史:中学是电脑白痴
- [书摘]架构真经--可扩展性规则的利益与优先级排行榜
- 自考计算机应用技术题,全国自考计算机应用技术试题及答案解析-20210522014558.docx-原创力文档...
- phpmyadmin的config-default-php文件中各个配置参数的详细说明
- python3-基础8
- 用java代码怎样做pos结算_Java Tile.Pos方法代码示例
- word xml 上下标
- Python几个编程小作业
- 个人简历模板,非常漂亮,docx格式,用word可自行修改
- 关于 mysql数据库“ERROR 1118 (42000): Row size too large.“ 的解决方法
- 有向图 G=(V, E) 的拓扑排序
- c语言非常道李忠答案,C语言非常道
- Android - 吸顶效果 布局篇