zoukankan      html  css  js  c++  java
  • MyBatis (十) 注解映射

    普通映射
     
    [html] view plain copy
     
    @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.结果集映射
     
    [html] view plain copy
     
    @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),一对一
     
    [html] view plain copy
     
    @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)一对多
     
    [html] view plain copy
     
    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);
    }
     
     
    [html] view plain copy
     
    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类
     
    [html] view plain copy
     
    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接口
    [html] view plain copy
     
    @SelectProvider(type=StudentDynaSqlProvider.class,method="getStudent")
    public List<Student> getStudents(Map<String,Object> map);
  • 相关阅读:
    基于注解的ssh框架之spring配置文件
    hdu 4770 Lights Against Dudely
    便捷开发工具(未完)
    solr 简单搭建 数据库数据同步(待续)
    Nginx对某个文件夹或整个站点进行登录认证的方法
    swift 单例模式
    POJ 2823 Sliding Window(单调队列)
    Android 网络下载图片
    一个表空间offline后alert日志报ORA-01135 和ORA-01110的问题
    [c#]分析器错误消息: 发现不明白的匹配。
  • 原文地址:https://www.cnblogs.com/bkyliufeng/p/6291741.html
Copyright © 2011-2022 走看看