在接口中添加注解,就不用使用mapper,xml映射文件。
使用注解开发的原因 : 解耦 , 可拓展 , 提高复用,而且在分层开发中 , 上层不用管具体的实现 , 使得开发变得容易 , 规范性更好。
因为主要是CRUD,所以注解为:
- @select ()
- @update ()
- @Insert ()
- @delete ()
另外还有一个@Param,用于给方法参数起一个名字。其使用原则为:
- 在方法只接受一个参数的情况下,可以不使用@Param。
- 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
- 如果参数是 JavaBean , 则不能使用@Param。
- 不使用@Param注解时,参数只能有一个,并且是Javabean。
代码:
1.实体类
package com.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//所有方法,toString()等
@Data
//有参构造方法
@AllArgsConstructor
//无参构造方法
@NoArgsConstructor
public class User {
private int id;
private String name;
private String pwd;
}
2.mapper接口
package com.dao;
import com.domain.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
/*
一、注解,只适用于简单sql语句,复杂的还是要用xml文件,最重要的目的就是解耦
二、LomBok插件,就不用写get和set方法,或者toString方法,构造方法等
步骤:1.安装Lombok插件
2.导入jar包
3.在实体类中加注解
*/
public interface UserMapper {
@Select("select * from user")
List<User> getUsers();
//注解sql语句里的#{id}和方法参数里@Param()中的id必须要保持一致。
//如果方法存在多个基本类型参数,所有参数前面必须都要加上@Param()注解(安全)
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id);
// User getUser(@Param("id") int id, @Param("name") String name);
@Update("update user set name = #{name}, p