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)一对多

	@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);
	@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类

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);

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis是一种基于 Java 的持久层框架,它提供了一种通过注解的方式来进行 SQL 映射的方式,称为 Mybatis 注解映射。使用注解映射可以使得代码更加简洁,也更加易于维护。 在 Mybatis 中,注解主要分为两类:一类是用于描述 SQL 语句的注解,如 @Select、@Insert、@Update、@Delete 等;另一类是用于描述实体类与数据库字段之间映射关系的注解,如 @Results、@Result、@Param 等。 下面是一个使用 Mybatis 注解映射进行 CRUD 操作的示例: 1. 实体类 ```java public class User { private int id; private String name; private int age; //省略getter和setter方法 } ``` 2. Mapper 接口 ```java public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(int id); @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") int addUser(User user); @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}") int updateUser(User user); @Delete("DELETE FROM user WHERE id=#{id}") int deleteUser(int id); } ``` 3. 配置文件 ```xml <!-- 配置 Mybatis --> <configuration> <!-- 配置 Mapper 接口扫描 --> <mappers> <mapper class="com.example.mapper.UserMapper"/> </mappers> </configuration> ``` 以上代码中,@Select、@Insert、@Update、@Delete 注解分别对应查询、插入、更新、删除操作,其中 #{} 表示占位符,用于接收参数。同时,Mapper 接口中的方法名需要与对应的 SQL 语句名称一致。 除了 SQL 语句的注解外,@Results、@Result、@Param 等注解也可以用于实体类与数据库字段之间的映射关系。例如: ```java @Results(id = "userMap", value = { @Result(property = "id", column = "id", id = true), @Result(property = "name", column = "name"), @Result(property = "age", column = "age") }) public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") @ResultMap("userMap") User getUserById(int id); //省略其他方法 } ``` 以上代码中,@Results 注解用于定义结果集映射规则,@Result 注解用于定义单个属性与字段之间的映射关系,@ResultMap 注解用于引用结果集映射规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值