各种注解der

@Autowired与@Resource

1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired() @Qualifier("baseDao")     
private BaseDao baseDao;    

3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,
如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

@Resource(name="baseDao")     
private BaseDao baseDao;    

我喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。


@param

描述: 记录传递给一个函数的参数。

概述
@param标签提供了对某个函数的参数的各项说明,包括参数名、参数数据类型、描述等。

@param标签要求您指定要描述参数的名称。您还可以包含参数的数据类型,使用大括号括起来,和参数的描述。

参数类型可以是一个内置的JavaScript类型,如string或Object,或是你代码中另一个标识符的JSDoc
namepath(名称路径)。如果你已经在这namepath(名称路径)上为标识符添加了描述,JSDoc会自动链接到该标识符的文档。您还可以使用type的表达式来表示,例如,该参数不能为空或可以接受任何类型;详见@type
标签文档。

如果您提供的描述,在描述之前插入一个连字符,可以使JSDoc注释更具可读性。请务必在连字符后加一个空格。

mybatis中使用@param和不使用区别
1,使用@Param注解

当以下面的方式进行写SQL语句时:

 @Select("select column from table where userid = #{userid} ")
    public int selectColumn(int userid);

当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以。

@Select("select column from table where userid = ${userid} ")
public int selectColumn(@Param("userid") int userid);

当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。

@Select("select column from table where userid = ${userid} ")
public int selectColumn(@Param(“userid”) int userid);

2,不使用@Param注解

不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。

  // 这里id是user的属性

@Select("SELECT * from Table where id = ${id}")
Enchashment selectUserById(User user);

spring和mybatis中@param使用区别
1.spring中@param

   /**
      * 查询指定用户和企业关联有没有配置角色
      * @param businessId  memberId
      * @return
      */
     int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 123456

2.mybatis中的param

 /**
      * 查询指定用户和企业关联有没有配置角色
      * @param businessId memberId
      * @return
      */
     int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 

从表面上看,两种并没有区别,但是在xml文件中使用的时候是有区别的,Spring中的@param在xml需要如下这样引用变量

<select id="selectRoleCount" resultType="java.lang.Integer" > 
    count(tbm.id)    from t_business_member_relation tbm    where tbm.business_id = #{0,jdbcType=INTEGER}
    and tbm.member_id = #{1,jdbcType=INTEGER}
    and tbm.role_business_id is not null
</select>```
是根据参数的顺序来取值的,并且从0开始。而在mybatis @param在xml中则是如下这样引用变量的

```java
<select id="selectRoleCount" resultType="java.lang.Integer" >    
    count(tbm.id)    from t_business_member_relation tbm    where tbm.business_id = #{businessId,jdbcType=INTEGER}
    and tbm.member_id = #{memberId,jdbcType=INTEGER}
    and tbm.role_business_id is not null
 </select>

是通过参数名来引用的
注:如果Mapper.java文件中引用的是Spring的

org.springframework.data.repository.query.Param;

但是Mapper.xml中使用的是mybatis 的用法,那么就会如下的错误

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'businessId' not found. Available parameters are [1, 0, param1, param2]

所以在使用的时候一定要注意@param引用和使用的一致性

@TableName

在这里插入图片描述

@TableName("t_user")
public class User

在这里插入图片描述

@TableId

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@TableField

字段名为user_name

//  指定属性所对应的字段名
    @TableField("user_name")
    private String name;

@TableLogic

逻辑删除可以在数据库添加字段
然后在实体类写入该注解
然后实现该字段一开始为0,如果被删除把该字段改为1
这样在客户端看来就是已经删除但是在数据库只是修改了该字段,并没有删除改信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值