mybatis注解在方法直接编写SQL@Select@Insert@Update@Delete

使用mybatis框架在xml文件中编写相应的SQL,正规操作有一个mapper就需要对应一个xml文件,累积下来就有很多文件,处理起来贼繁琐,直接在对应方法上使用注解编写SQL,一定程度上可以减少开发时间,但是有一个很不好的地方,判断语句或者批量操作是需要手动添加,这个无法自动生成,需要对这下比较熟悉才能上手

目录

    • 一、查询 @Select
    • 二、插入 @Insert
    • 三、修改 @Update
    • 四、删除 @Delete

引入类

import org.apache.ibatis.annotations.*;

注意:在mapper接口上需要加上两个注解

@Mapper
@Repository

一、查询 @Select

  1. 查询单个对象
/**
* 查询单个对象
*
* @param name 名称
* @return 具体对象
*/
@Select(" select name,age,sex,class_name,nick_name as nickName from table_name where name=#{name}")
@Results({
            @Result(property = "className", column = "class_name")
    })
Student queryOne(@Param("name") String name);

如果表中字段定义的是下划线 _ 格式,而java Bean又是驼峰
① 使用@Result( )注解来进行映射
② 使用as在字段后面重命名(as可省略)

  1. 查询对象列表
/**
* 查询对象列表
*
* @return 对象列表
*/
@Select(" select * from table_name ")
@Result(property = "className", column = "class_name")
@Result(property = "nickName", column = "nick_name")
List<Student> queryList();
  1. 根据条件查询列表(批量查询)

/**
     * 根据编号查询列表
     *
     * @param grade   年级
     * @param numList 编号列表
     * @return 列表对象
     */
    @Select("")
    List<Student> getListByNum(@Param("grade") String grade, @Param("numList") List<String> numList);

上面程序内只创建了一个SQL,通过 in 编号列表去循环匹配,千万不要用去套用整个SQL,那样每一个编号就会创建一个SQL,效率很低,造成没有必要的数据库压力

  1. when,字段为空判断
@Select("")
    Set<String> getAllNums(@Param("grade") String grade);

二、插入 @Insert

  1. 插入单个
@Insert("insert into table_name (num,grade,name,age,sex)"
            + "values(#{num},#{grade},#{name},#{age},#{sex}")
    void insert(Student student);
  1. 批量插入
@Insert("")
    void batchInsert(@Param("list") List<Student> list);

三、修改 @Update

  1. 修改单个
@Update(" update table_name set grade=#{grade}, name=#{name}, age=#{age}, sex=#{sex}" +
            " where  num=#{num}")
    int updateStudent(Student student);
  1. 批量修改
 @Update("")
    void batchUpdate(@Param("list")List<String> list, @Param("grade") String grade);
  1. if条件的使用
@Update("")
    void update(Student student);

四、删除 @Delete

@Delete(" DELETE FROM table_name ")
void deleteAll();

实体类

public class Student {
	// 编号
	private String num;
	// 年级
	private String grade;
    private String name;
    // 班级名称
    private String className;
    // 绰号
    private String nickName;
    private Integer age;
    private Boolean sex;
}

这里只展示了我自己常用的方法,更多的标签用法同学们可以去官网或者百度寻找
^ _ ^

你可能感兴趣的:(mybatis,java,mysql)