java  中MyBatis注解映射的实例详解

 更新时间:2017年09月05日 14:22:42   作者:yunlian0621  
这篇文章主要介绍了java 中MyBatis注解映射的实例详解的相关资料,这里提供实例帮助大家理解这部分内容,需要的朋友可以参考下

java  中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); 
} 

  Java代码 

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

 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • java启动线程的3种方式对比分析

    java启动线程的3种方式对比分析

    这篇文章主要为大家对比分析了java启动线程的3种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • java 中如何实现 List 集合去重

    java 中如何实现 List 集合去重

    这篇文章主要介绍了java 中如何实现 List 集合去重,List 去重指的是将 List 中的重复元素删除掉的过程,下文操作操作过程介绍需要的小伙伴可以参考一下
    2022-05-05
  • Java枚举(enum) 详解7种常见的用法

    Java枚举(enum) 详解7种常见的用法

    这篇文章主要介绍了Java枚举(enum) 详解7种常见的用法,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • Java中的线程池ThreadPoolExecutor解析

    Java中的线程池ThreadPoolExecutor解析

    这篇文章主要介绍了Java中的线程池ThreadPoolExecutor解析,线程池,thread pool,是一种线程使用模式,线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,需要的朋友可以参考下
    2023-11-11
  • Spring-AOP @AspectJ切点函数之@annotation()用法

    Spring-AOP @AspectJ切点函数之@annotation()用法

    这篇文章主要介绍了Spring-AOP @AspectJ切点函数之@annotation()用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java学习:日期的运算代码

    java学习:日期的运算代码

    java.util.Date下的很多(构造)方法,已经被标识为"过时"方法,官方推荐使用Calendar类来处理日期的运算,下面是示例:
    2013-02-02
  • SpringBoot中利用AOP和拦截器实现自定义注解

    SpringBoot中利用AOP和拦截器实现自定义注解

    本文将通过拦截器+AOP实现自定义注解,在这里拦截器充当在指定注解处要执行的方法,aop负责将拦截器的方法和要注解生效的地方做一个织入,感兴趣的可以尝试一下
    2022-06-06
  • 解决spring boot创建项目遇到配置的问题

    解决spring boot创建项目遇到配置的问题

    这篇文章主要介绍了解决spring boot创建项目遇到配置的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java程序员必须知道的5个JVM命令行标志

    Java程序员必须知道的5个JVM命令行标志

    这篇文章主要介绍了每个Java程序员必须知道的5个JVM命令行标志,需要的朋友可以参考下
    2015-03-03
  • springboot幂等切片的实现

    springboot幂等切片的实现

    本文主要介绍了springboot幂等切片的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论