mybatis学习笔记:注解开发CRUD和Lombok

文章目录


注解开发

  • 注解开发在接口上实现
public interface UserMapper {
   @Select("select * from user")
   List<User> getUsers();
   }
  • 核心配置文件中需要绑定接口
<mappers>
    <mapper class="com.weirdo.dao.UserMapper"/>
</mappers>
  • 原理
    本质是:反射机制实现
    底层是:动态代理

CRUD

编写接口处的注解

//方法存在多个参数,所有参数前面必须加上@Param("id")注解
   @Select("select * from user where id = #{id}")
   User getUserById(@Param("id") int id);

   @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
   int addUser(User user);

   @Update("update user set name=#{name},pwd=#{password} where id = #{id}")
   int updateUser(User user);

   @Delete("delete from user where id=#{id} ")
   int deleteUser(@Param("id") int id);

测试类

  public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //底层主要应用反射
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

//        User userById = mapper.getUserById(1);
//        System.out.println(userById);

//        mapper.addUser(new User(10,"yyy","123432"));

//        mapper.updateUser(new User(6,"xxx","0988"));

          mapper.deleteUser(5);
        sqlSession.close();
    }

关于@Param( )注解

  • 基本类型的参数或者String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议大家都加上
  • 我们在SQL中引用的就是我们这里的@Param()中设定的属性名

#{ }和${ }区别

  1. 使用#{}的时候,用来传入参数,sql会在解析的时候加上"",当成字符串来解析,如#{id}=“id”
  2. #{}很大程度防止sql注入,更安全

Lombok

一个IDEA中的插件,作用是可以通过它定义的注解来精简冗长和繁琐的代码,主要针对简单的Java模型对象(POJO)。

在porn.xml中导入

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
    </dependency>
</dependencies>

lombok的使用

@Data
@Data最常用的注解之一。注解在类上,提供该类所有属性的getter/setter方法,还提供了equals、canEqual、hashCode、toString方法。

@Data
public class User {
    private int id;
    private String name;
    private String password;
}

自动提供各种方法
mybatis学习笔记:注解开发CRUD和Lombok
除了@Data这种,还可以单独使用@Getter、@Setter、@ToString、@EqualsAndHashCode、@Log、@Log4j、 @Log4j2等很多注解

上一篇:redis哨兵centos7开机自启动


下一篇:Mybatis学习笔记:CRUD