MyBatis学习笔记-09-注解开发(含CRUD)


注解开发.

1、面向接口编程.

  • 根本原因:

    • 解耦,可扩展,提高代码复用,分层开发中、上层不用管具体实现,大家都遵守的共同标准,使得开发变的更容易,规范性更好
    • 理想的系统设计规范:定义与实现分离
  • 关于接口的理解

    • 接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。

    • 接口的本身反映了系统设计人员对系统的抽象理解。

    • 接口应有两类:

      • 第一类是对一个个体的抽象,它可对应为一个抽象体(abstract class);
      • 第二类是对一个个体某一方面的抽象,即形成一个抽象面(interface);

    一个体有可能有多个抽象面。抽象体与抽象面是有区别的。

2、注解使用(CRUD).

目录结构

可以在工具类中设置自动提交事务

//MyBatisUtils.java 中新增
//返回 sqlsession对象 参数为true 自动提交
public static SqlSession  getSqlSession(boolean autoCommit){
    return sqlSessionFactory.openSession(autoCommit);
}
  1. 编写接口,及注解

    public interface UserMapper {
        //获取 用户列表
        @Select("select * from mybatis.user")
        List<User> getUserList();
        //增加用户
        @Insert("insert into mybatis.user(id,name,pwd) value(#{id},#{name},#{pwd})")
        int addUser(User user);
        //修改用户密码
        @Update("update mybatis.user set pwd=#{password} where id=#{id}")
        int updateUserPwd(@Param("id") int id,@Param("password") String pwd);
        //删除用户
        @Delete("delete from mybatis.user where id=#{id}")
        int deleteUser(int id);
    }
    
  2. 需要在核心配置文件中绑定接口

    <mappers>
        <mapper class="dao.UserMapper"/>
    </mappers>
  3. 测试

    代码省略 与之前相同

本质:反射机制实现

底层:动态代理

3、关于@Param().

  • 基本类型的参数或者String类型,需要加上
  • 引用类型不用加
  • 如果只有一个基本类型,可以忽略,推荐加上
  • 在Sql中引用的是@Param()中自定义的参数名

4、Lombok(团队开发不建议).

  • 一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码

  • 加上这个插件,就不用写getter和setter。。。 – 用于偷懒

  • 使用

    1. 引入相应的maven包
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>
    1. 安装插件(IDEA)

    2. 了解常用注解:
      @Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
      @Getter :使用方法同上,区别在于生成的是getter方法。
      @ToString :注解在类,添加toString方法。
      @EqualsAndHashCode: 注解在类,生成hashCode和equals方法。
      @NoArgsConstructor: 注解在类,生成无参的构造方法。
      @RequiredArgsConstructor: 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
      @AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。
      @Data: 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
      @Slf4j: 注解在类,生成log变量,严格意义来说是常量。

    3. 使用注解


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
MyBatis学习笔记-10-Mybatis执行流程 MyBatis学习笔记-10-Mybatis执行流程
Mybatis执行流程 sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);分析. 1.第一步,实例化SqlSessionFactoryBuilder调用方法build
2020-07-24
下一篇 
MyBatis学习笔记-08-分页 MyBatis学习笔记-08-分页
分页. 减少数据的处理量 数据太多在页面上也不好展示 下面只是简单的展示,分页查询,并不是,面向对象的分页 Limit分页.使用Mybatis实现分页,核心是sql 接口方法 //limit 分页 List<User> ge
2020-07-24 liuminkai
  目录