mybatis注解使用

来源:互联网 发布:mac如何装win10 编辑:程序博客网 时间:2024/06/05 17:07

这篇主要介绍在项目中,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的为例,其他的注解使用类似,可以类比。

原创粉丝点击