8、使用注解开发

8.1、面向接口编程

  • 大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口编程

  • 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好

  • 在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;

  • 而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。

  • 关于接口的理解

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

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

  • 接口应有两类:

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

三个面向区别

  • 面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法 .
  • 面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现 .
  • 接口设计与非接口设计是针对复用技术而言的,与面向对象(过程)不是一个问题.更多的体现就是对系统整体的架构

8.2、使用注解开发

  1. 注解在接口上实现
//查找所有的用户
@Select("select * from user")
public List<User> findAll();
  1. 核心配置文件中绑定接口
<mappers><mapper class="cn.edu.cxtc.dao.UserMapper"></mapper>
</mappers>
  1. 测试代码
 @Test
public void findAll() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> users = mapper.findAll();for (User user : users) {System.out.println(user);}sqlSession.close();
}
  1. 注解的本质:反射机制实现,拿到Class对象,就可以拿到该类在方法区中class文件区中的所有对象(构造方法、成员方法、成员变量)
  2. 底层:动态代理

8.3、使用注解完成CRUD

  1. 查询所有的用户

    //查找所有的用户
    @Select("select * from user")
    public List<User> findAll();
    
      //查询所有
    @Test
    public void findAll() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> users = mapper.findAll();for (User user : users) {System.out.println(user);}sqlSession.close();
    }
    
  2. 删除一个用户

    //删除一个用户
    @Delete("delete from user where id = #{id}")
    public int deleteUserByid(@Param("id") int id);
    
    //根据id删除一个用户
    @Test
    public void deleteUserById() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);int i = mapper.deleteUserByid(42);System.out.println("i = "+i);if (i > 0) {System.out.println("删除成功!!!");} else {System.out.println("刪除失敗!!!");}sqlSession.commit();sqlSession.close();
    }
    
  3. 修改用户

    //修改50号的地址为昆明市寻甸县
    @Update("update user set address = '昆明市寻甸县' where id = #{id}")
    public int updateUserById(@Param("id") int id);
    
    //根据id修改一个用户
    @Test
    public void updateUserById() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);int i = mapper.updateUserById(50);System.out.println("i = "+i);if (i > 0) {System.out.println("修改成功!!!");} else {System.out.println("修改失敗!!!");}sqlSession.close();
    }
    
  4. 添加一个用户

    //添加一個用戶
    @Insert("insert into user values(#{id}, #{username}, #{birthday}, #{sex}, #{address})")
    public int addUser(User user);
    
    @Test
    public void addUser() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);int i = mapper.addUser(new User(20, "苏沙娜", new Date(System.currentTimeMillis()), "女", "云南省大理市"));System.out.println("i = "+i);if (i > 0) {System.out.println("插入成功!!!");} else {System.out.println("插入失敗!!!");}sqlSession.commit();sqlSession.close();
    }
    

8.4、@Param()注解

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

Mybatis08:使用注解开发相关推荐

  1. MyBatis07:使用注解开发

    本文为 SSM 框架系列之 MyBatis 第七部分:使用注解开发 其它内容的链接如下: [1]MyBatis01:初识 MyBatis 与 第一个 MyBaits 程序 [2]MyBatis02:C ...

  2. mybatis使用注解开发

    mybatis使用注解开发 面向接口编程 在之前我们是通过面向对象编程,但是在真正开发的时候我们会选择面向接口编程. 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的 ...

  3. 使用注解开发SpringMVC详细配置教程

    目录 1.使用注解开发SpringMVC 1.新建一个普通的maven项目,添加web支持 2.在pom.xml中导入相关依赖 3.配置web.xml 4.编写SpringMVC配置文件 1. 自动扫 ...

  4. 【Spring Web MVC】Spring Web MVC 注解开发环境搭建

    为什么80%的码农都做不了架构师?>>>    1.创建maven项目 创建一个名为:springwebmvc-first的maven项目 2.添加依赖包 要使用springWebM ...

  5. AspectJ的注解开发AOP:异常抛出通知的学习

    AspectJ的注解开发AOP:异常抛出通知的学习 参考文章: (1)AspectJ的注解开发AOP:异常抛出通知的学习 (2)https://www.cnblogs.com/xiaolaha/p/1 ...

  6. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)注解开发

    Spring注解开发 Spring是轻代码重配置的框架,配置比较繁重,会影响开发效率.这个时候可以通过注解开发,注解代替xml配置文件可以简化配置,提高开发效率. Spring原始注解 注解分为原始注 ...

  7. 07-XML 文件注解开发

    目录 注解 一.@Configuration @Import 二.@ComponentScan 三.@bean 1.Config完整代码 2.测试类 不论是 xml 开发或者注解开发都有一个问题是,我 ...

  8. 011_AOP注解开发

    一. Spring的基于ApsectJ的注解的AOP开发 1. 编写目标类并配置 2. 编写切面类并配置 3. 在配置文件中打开注解的AOP开发 4. 在切面类上使用注解@Aspect 5. 前置通知 ...

  9. SpringMVC学习03之使用注解开发SpringMVC

    复习 Spring MVC的特点: 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼容性好,无缝结合 约定优于配置 功能强大:RESTful.数据验证.格式化.本地化.主题等 简 ...

最新文章

  1. python中字符串前面加一个u或者r的区别
  2. windows server r2 之如何设置共享文件夹访问不需要输入用户名和密码
  3. [信息收集] HCOMP 2010概况及收录论文
  4. MS Script Control的 COM
  5. c 语言中的菱形继承,C++中的菱形继承深入分析
  6. html怎么在jupyter编辑,jupyter home jupyter环境变量怎么设定
  7. 为何大数据分析那么重要
  8. arctanx麦克劳林公式推导过程_经典卢瑟福散射公式的初等推导
  9. IOS开发之——硬件开发-加速计应用实例(04)
  10. 卡尔曼滤波算法详细推导
  11. 求若当标准型的变换矩阵
  12. HTML+CSS制作人物介绍卡片效果
  13. 如何下载安装VS2017下载 vs2017社区版
  14. 微生物组测序方法比较
  15. PowerBI-时间智能函数-DATEADD
  16. vue--es6转es5打包
  17. 文章伪原创检测工具,防止抄袭风险
  18. 摄像头水平视野垂直视野?_如何在“动物穿越:新视野”中使用Amiibo卡
  19. 11-Linux中批量解压缩rar文件
  20. 理财知识心得记录-1

热门文章

  1. JavaScript学习笔记(二)
  2. 基于Javaweb和阿里云服务器的用户管理平台
  3. 《机器学习实战》(七)-- LinearRegression
  4. Windows Office 2019 很抱歉,此功能看似已中断,并需要修复
  5. C语言——字符串+转义字符+注释
  6. 心理学家:当你发现这三个现象,说明有人正在欺骗你,句句很真实
  7. FineReport(帆软)关于柱状图数据标签被遮挡的问题处理
  8. tomcat处理html流程,基于Tomcat运行HTML5 WebSocket echo实例详解
  9. 大长今人物系列:长今的心理课——医女张德(转载)
  10. 认识DDR SDRAM