使用mybatis框架在xml文件中编写相应的SQL,正规操作有一个mapper就需要对应一个xml文件,累积下来就有很多文件,处理起来贼繁琐,直接在对应方法上使用注解编写SQL,一定程度上可以减少开发时间,但是有一个很不好的地方,判断语句或者批量操作是需要手动添加,这个无法自动生成,需要对这下比较熟悉才能上手
引入类
import org.apache.ibatis.annotations.*;
注意:在mapper接口上需要加上两个注解
@Mapper
@Repository
/**
* 查询单个对象
*
* @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可省略)
/**
* 查询对象列表
*
* @return 对象列表
*/
@Select(" select * from table_name ")
@Result(property = "className", column = "class_name")
@Result(property = "nickName", column = "nick_name")
List<Student> queryList();
/**
* 根据编号查询列表
*
* @param grade 年级
* @param numList 编号列表
* @return 列表对象
*/
@Select("")
List<Student> getListByNum(@Param("grade") String grade, @Param("numList") List<String> numList);
上面程序内只创建了一个SQL,通过 in 编号列表去循环匹配,千万不要用去套用整个SQL,那样每一个编号就会创建一个SQL,效率很低,造成没有必要的数据库压力
@Select("")
Set<String> getAllNums(@Param("grade") String grade);
@Insert("insert into table_name (num,grade,name,age,sex)"
+ "values(#{num},#{grade},#{name},#{age},#{sex}")
void insert(Student student);
@Insert("")
void batchInsert(@Param("list") List<Student> list);
@Update(" update table_name set grade=#{grade}, name=#{name}, age=#{age}, sex=#{sex}" +
" where num=#{num}")
int updateStudent(Student student);
@Update("")
void batchUpdate(@Param("list")List<String> list, @Param("grade") String grade);
@Update("")
void update(Student student);
@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;
}
这里只展示了我自己常用的方法,更多的标签用法同学们可以去官网或者百度寻找
^ _ ^