关于Mybatis中注解的使用

Mybatis中使用注解式开发可以简化配置文件,
sql 类型主要分成 : select@Select( s q l ) , u p d a t e @ U p d a t e ( {sql}), update@Update( sql),update@Update({sql}), insert@Insert( s q l ) , d e l e t e ( sql), delete( sql),delete({sql}).
@Results 用来设置table信息与bean相关字段的映射关系, 每一个字段的关系使用 @Result控制。
@ResultMap 可以通过Id,应用其他的Results
@MapKey 此注解应用将查询数据转为 Map<>, 注意的是MapKey()中的id最终调用bean的getId 获取数据,所以需要映射bean字段而不是table.
@Param注解:
@Param注解用于给方法参数起一个名字。使用原则:
在方法只接受一个参数的情况下,可以不使用@Param。
在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
@Insert :
insert 时获取自增主键的方式:
法一:
@Options(useGeneratedKeys = true, keyColumn = “id列”, keyProperty = “接受的属性名”)
法二:
@SelectKey(statement=“SELECT LAST_INSERT_ID()”, keyProperty=“接受属性名”, before=false, resultType=Integer.class)
#与$的区别:
#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符?:
对于 : INSERT INTO user (name) VALUES (#{name}); ==> INSERT INTO user (name) VALUES (?);
符 号 的 作 用 是 直 接 进 行 字 符 串 替 换 : 对 于 : I N S E R T I N T O u s e r ( n a m e ) V A L U E S ( ′ {} 符号的作用是直接进行字符串替换: 对于 : INSERT INTO user (name) VALUES (&#x27; ::INSERTINTOuser(name)VALUES({name}’); ==> INSERT INTO user (name) VALUES (‘tianshozhi’);
使用动态sql语句
一、使用注解的方式编写动态sql语句时需要加上,否则会报错
二、使用类的方式
将@select注解替换为@selectProvider注解,type属性为类名,method
为要使用的方法名
非结构化实例:
@SelectProvider(type = UserMapperProvider.class,method = “getUsers”)
List getUsers(User user);

class UserMapperProvider{
    public String getUsers(User user){
        SQL sql = new SQL();
        sql.SELECT("id,username");
        sql.SELECT("password");
        sql.FROM("user");
        if(user.getUsername() != null){
            sql.WHERE("username = #{username}");
        }
        return sql.toString();
    }
}

结构化实例:
@SelectProvider(type = UserMapperProvider.class,method = “getUsersBySql”)
List getUsers(User user);
class UserMapperProvider{
public String getUsers(User user){
return new SQL(){{
SELECT(“id,username”);
SELECT(“password”);
FROM(“user”);
if(user.getUsername() != null){
WHERE(“username = #{username}”);
}
}}.toString();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值