mybatis注解使用

这篇主要介绍在项目中,mybatis经常用到的注解,大部分在项目中都用过了。

mybatis映射sql语句问题。可以通过配置xml来添加映射,也可以在接口上面直接用注解来映射,如 @Select( “SQL语句”) 其他还有@Update,@Delete,@Insert等。

动态生成sql语句可以用@*Provider(),*为各种方法(select……)。
值得一提的是,以@SelectProvider(class,method)为例子,来动态配置sql语句,这个注解的意思是去class类中去找这个方法执行,并把参数作为map传入方法,返回类型为sql语句。

以一个模糊查找为例子。
接口

    //用户组编码、用户组名称查找
    @SelectProvider(type = QueryHelper.class,method = "getGroupInfo")
    List<TGroup> getByCN(@Param("groupCode") String loginName, @Param("groupName") String userName, @Param("start") int limit, @Param("num") int num);

方法

public class QueryHelper {
    //通过用户组编码、用户组名称模糊查询
     public String  getGroupInfo(Map<String, Object> parameters){
        String groupCodeTag = null;
        String groupNameTag = null;

        Object groupCode = parameters.get("groupCode");
        Object groupName = parameters.get("groupName");

        String sql = "select GROUP_ID,GROUP_CODE,GROUP_NAME from T_GROUP where 1=1";

        if (groupCode!=null)
            groupCode = groupCode.toString();
        if(groupCodeTag!=null&&groupCodeTag.length()>0)
            sql +=" and GROUP_CODE LIKE CONCAT('%',#{groupCode},'%') ";

        if (groupName!=null)
            groupNameTag = groupName.toString();
        if(groupNameTag!=null&&groupNameTag.length()>0)
            sql +=" and GROUP_NAME LIKE CONCAT('%',#{garoupName},'%') ";


        sql += " limit #{start},#{num}";
        System.out.println(sql);
        return sql;



    }



}

缓存优化

@CacheNamespace(size = 100)表示开启缓存,并且缓存100个对象,读写默认是开启的,缓存内省刷新时间为默认3600000毫秒,写策略是拷贝整个对象镜像到全新堆(如同CopyOnWriteList)因此线程安全。

@Options(useCache = true, flushCache = false, timeout = 10000) : 一些查询的选项开关,比如useCache = true表示本次查询结果被缓存以提高下次查询速度,flushCache = false表示下次查询时不刷新缓存,timeout = 10000表示查询结果缓存10000秒。 当是select操作的时候可以关闭flushCash,但是会影响到数据库数据的操作,要打开flushCash,避免数据不一致。

@Results(value = {
@Result(id = true, property = “id”, column = “RID”, javaType = String.class, jdbcType = JdbcType.VARCHAR),
@Result(property = “text”, column = “TTEXT”, javaType = String.class, jdbcType = JdbcType.VARCHAR) })
可以将返回的结果与实体类的属性进行映射,假如列名和属性一致时,会自动映射。column 为数据库的列名,property为实体类的属性,id为主键,javaType 为实体类的类型,jdbcType为数据库column的类型。

@Param(“id”) 指定传入参数的映射。

    @Select("select * from T_GROUP where GROUP_ID = #{gID,jdbcType=INTEGER}")
    TGroup getById(@Param("gID") String groupId);

@ResultMap(value = “userMap”)
这个是把ResultMap配置在xml中,然后在同一个namespace下才能使用。

这里的注解是mybatis中常用的注解,以select的为例,其他的注解使用类似,可以类比。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值