Mybatis常用注解总结

简介

什么是 MyBatis ?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis中"#"和"$"的区别(小提示)

动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。

#{} 和 ${} 在预编译中的处理是不一样的。#{} 在预处理时,会把参数部分用一个占位符 ? 代替,变成如下的 sql 语句:

select * from user where name = ?;

而 ${} 则只是简单的字符串替换,在动态解析阶段,该 sql 语句会被解析成

select * from user where name = 'sakura';

以上,#{} 的参数替换是发生在 DBMS 中,而 ${} 则发生在动态解析过程中。

那么,在使用过程中我们应该使用哪种方式呢?

答案是,优先使用 #{}。因为 ${} 会导致 sql 注入的问题

一、mybatis 简单注解

关键注解词 : 

@Insert : 插入sql , 和xml insert sql语法完全一样

@Select : 查询sql, 和xml select sql语法完全一样

@Update : 更新sql, 和xml update sql语法完全一样

@Delete : 删除sql, 和xml delete sql语法完全一样

@Param : 入参

@Results : 结果集合

@Result : 结果

 

列:

 /**
     * 通过对象新增
     * @param student
     * @return
     */

    @Insert("insert into student(s_id, s_name, age) values (#{studentID, jdbcType=VARCHAR}, #{studentName, jdbcType=VARCHAR}, #{age, jdbcType=INTEGER})")
    int insertByObject(Student student);

    /**
     * 通过map新增
     * @param map
     * @return
     */

    @Insert("insert into student(s_id, s_name, age) values (#{studentID, jdbcType=VARCHAR}, #{studentName, jdbcType=VARCHAR}, #{age, jdbcType=INTEGER})")
    int insertByMap(Map map);

    /**
     * 通过编号查询
     * @param studentID

     * @return
     */

    @Select("select * from student where student_id= #{studentID}")
    @Results({
            @Result(column = "s_id", property = "studentID"),
            @Result(column = "s_name", property = "studentName"),
            @Result(column = "age", property = "age")
    })

    Student findByStudentID(String studentID);

    /**
     * 通过姓名查询
     * @param studentName
     * @return
     */

    @Select("select * from student where student_name = #{studentName}")
    @Results({
            @Result(column = "s_id", property = "studentID"),
            @Result(column = "s_name", property = "studentName"),
            @Result(column = "age", property = "age")
    })

    List findByStudentName(String studentName);

    /**
     * 通过编码删除
     * @param studentID
     * @return
     */

    @Delete("delete from student where s_id = #{studentID}")
    int deleteByStudentID(String studentID);

    /**
     * 通过对象修改
     * @param student
     * @return
     */

    @Update("update student set student_name = #{studentName}, age = #{age} where s_id = #{studentID}")
    int updateByObject(Student student);

    /**
     * 通过编码修改名字
     * 传多个参数时必须使用@Param("")
     * @param studentName
     * @param studentID
     * @return
     */

    @Update("update student set student_name = #{studentName} where s_id = #{studentID}")
    int updateStudentNameByStudentID(@Param("studentName") String studentName, @Param("studentID") String StudentID);

 

你可能感兴趣的:(Java)