MyBati s映射器注解

发布于:2024-08-01 ⋅ 阅读:(154) ⋅ 点赞:(0)

映 射 器 注 解

映射器配置文件的缺陷

繁琐:配置文件的书写本身繁琐,需要掌 握的内容比较多

不直观:配置文件和接口直接只是名称相同, 对应起来比较麻烦.

常用的注解

基本注解        实现简单的增删改查操作。

结果映射注解        实现结果的映射关系, 也可以完成级联映射。

动态SQL注解        实现动态 SQL 的内容

基 本 注 解

基本注解的分类

增加操作:@Insert 类似 < insert > 完成新增

删除操作:@Delete 类似 < delete > 完成删除

修改操作:@Update 类似 < update > 完成修改

查询操作:@Select 类似 < select > 完成查询

@Insert 新增

功能:完成新增操作,类似配置文件的 元素;

说明:新增时所用的参数取值是接口方法的入参,可以是 对象,也可以是 Map 集合。

主键回填

功能:完成数据库自增主键的回填;

主键自增

功能:完成自定义主键的自增;

@Delete 删除

功能:完成删除操作,类似配置文件的 元素;

说明:删除时所用的参数取值是接口方法的入参,可以是 对象,也可以是 Map 集合。

@Update 更新

功能:完成更新操作,类似配置文件的 元素;

说明:更新时所用的参数取值是接口方法的入参,可以是 对象,也可以是 Map 集合。

@Selete 查询

功能:完成查询操作,类似配置文件的 元素;

说明:查询时所用的参数取值是接口方法的入参,可以是 对象,也可以是 Map 集合。

传递多个参数的方式:

方法1:Map 方式 跟sqlmap一样 方法

2:JavaBean 方式 跟sqlmap一样 方法

3:@Param 方式

结 果 映 射 注 解

@Results 结果映射

功能:完成数据库字段和 JavaBean 属性的映射关系; 

说明:每个 @Results 可以包含多个 @Result,其中通过 id 属性来判断是否为主键。

@Results 复用

跟sqlmap的xml配合使用

 跟当前接口中有定义使用id属性,每个sql 语句前要么有一个@Results映射关系,要 么要么@ResultMap,这两个不能同时给一 个sql语句

一对一映射

​​​​​​​

功能:  一对一的关系映射;

说明:FetchType.lazy 是延时加载,FetchType.EAGER 是即时加载。

 一对多映射

 

动 态 S Q L 注 解

注解动态sql

脚本sql:

XML配置方式的动态SQL,是 用<script>的方式把它照搬过 来,用注解来实现。适用于xml 配置转换到注解配置

方法中构建sql 2

@SelectProvider @InsertProvider @UpdateProvider @DeleteProvider 这些方法的使用

SQL 语句构造器

实现动态 SQL 的内容

脚本动态sql

在sql语句中加入标签,按照之前sqlmap中的动态sql的样式书写

 @SelectProvider 的用法

其他的动态 SQL 方法

 方法中构建动态sql

在接口中定义内部类,来构建需要的动态sql语句,比使用标签的方式结构更加清晰

SQL 语句构造器

SQL 语句构造器的常用方法

package com.xn.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
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.xn.bean.Student;

public interface StudentMapper {
	@Insert("insert into student(sname,birthday,ssex,classid)"
			+"values(#{sname},#{birthday},#{ssex},#{classid})")
	@Options(useGeneratedKeys = true,keyProperty = "sid")
	public int addStudent(Student s);
	
	@Update("update student set sname=#{sname},birthday=#{birthday},ssex=#{ssex},classid=#{classid} where sid=#{sid}")
	public int updateStudent(Student s);
	
	@Delete("delete from student where sid=#{v}")
	public int deleteStudent(int sid);
	
	@Select("select * from student where sid=#{v}")
	public Student findStudentById(int sid);
	
	@Select("select * from student")
	public List<Student> findAllAtudent();
	
	//多参 1.JavaBean 2.Map 3.param数(1) 4.arg(0) 5.@Param
	@Select("select * from student where ssex=#{a} and classid=#{b} limit #{c},#{d}")
	public List<Student> findStudentByssexAndClassidLimit(
			@Param("a")String ssex,
			@Param("b")int classid,
			@Param("c")int weizhi,
			@Param("d")int buchang);
	
//查询学生和班级信息 1对1
	@Results(id = "sc_Map",value= {
			@Result(column="classid",property="classid"),
			
			@Result(property = "bj",column="classid",
				one=@One(select= "com.xn.mapper.BanjiMapper.findBanjiByClassid"))
	})
	@Select("select * from student")
	public List<Student> findAllStudentAndClass();
	
	@Select("select * from class where classid=#{v}")
	public List<Student> findBanjiByClassid(int classid);
	
	@Select("select * from student where classid=#{v}")
	public List<Student> findStudentBycalssid(int classid);
	
}

 

package com.xn.mapper;

import java.util.List;

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.xn.bean.Banji;

public interface BanjiMapper {
	
	@Select("select * from class where classid=#{v}")
	public List<Banji> findBanjiByClassid(int classid);
	
	@Results({
		@Result(column = "classid",property="classid"),
		@Result(property = "stulist",column="classid",
			many=@Many(select="com.xn.mapper.StudentMapper.findStudentBycalssid"))
	})
	
	@Select("select * from class")
	public List<Banji> findAllBanjiAndStu();
	
}


网站公告

今日签到

点亮在社区的每一天
去签到