• 161-为什么mapper层的注解@Mapper可以取消,但是@Service与@Controller却不能取消呢?


    Spring容器中的对象是怎么被加载进来的?

      分为两种方式,一种是xml创建<bean>标签;一种是书写注解,然后在配置文件中扫描注解。注意注解只有加到类上面才能才能生成实体类,然后放到Spring容器中,就像我们将@Service是添加的ServieImpl实现类生一样。配置注解,必须配置注解扫描。

    Mapper接口的实例化对象是怎么被加载进Spring容器中的?
      我猜测当我使用Spirng框架与Mybatis框架时,Mapper采用动态代理创建的对象会被自动放到Spring容器,我们时不需要配置注解与扫描路径的。

      

     @Mapper注解与@Service与@Controller的区别?

      @Service与@Controller属于Spring框架的注解,注解在类上,需要被扫描才能创建实例化对象,并将对象放到Spring容器中。
      @Mapper注解是Mybatis框架的注解,使用这个注解我们的接口就可以被Mybatis框架加载,然后动态代理生成实体类,然后就将实体类放到了spring容器中。

    我们时怎么从Spring容器中获取对象的呢?
      
    有两种方式:一种是通过名字,默认定义的时类名的首字母小写,另一种就是byType,通过接口,但是实际上注入的是接口的同源实现类。

    @MapperSacan(com.bjpowernode.mapper)的作用是什么呢?
      对mapper包下的所有类添加@Mapper注解,这个扫描和@Service的扫描不一样。
      

    /**
     * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类
     * 
     * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id
     * 也就是说这个接口是不支持重载的
     */
    @Mapper
    public interface UserDAO {
     
        @Select("select * from user where name = #{name}")
        public User find(String name);
    
        /**
          * 对于多个参数来说,每个参数之前都要加上@Param注解,
          * 要不然会找不到对应的参数进而报错
          */
        @Select("select * from user where name = #{name} and pwd = #{pwd}")
        public User login(@Param("name")String name, @Param("pwd")String pwd);
    }
  • 相关阅读:
    用bower命令创建项目
    HBuilder打包ios应用
    响应式布局--引入外部样式
    手机中点击链接或button按钮出现黄色边框的解决办法
    通过输入卡号前10位数字判断是哪个银行的卡和类型(储蓄卡or信用卡)
    只允许输入数字和小数点
    python中的实例方法、静态方法、类方法、类变量和实例变量浅析
    python中的实例方法、静态方法、类方法、类变量和实例变量浅析
    python导入csv文件出现SyntaxError问题分析
    python导入csv文件出现SyntaxError问题分析
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12820640.html
Copyright © 2020-2023  润新知