mybat使用注解的方式如@Select写sql

package com.polymer.app.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import com.polymer.app.entity.BussinessDO;
@Mapper
public interface BussinessMapper {

    BussinessDO selectByPrimaryKey(String paramType);
    
    @Select("select PARAM_TYPE, PARAM_VALUE, DESCR, REMARK from bussiness_param where PARAM_TYPE = #{paramType,jdbcType=VARCHAR}")
    BussinessDO selectByPrimaryKeyNoXml(String paramType);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.polymer.app.mapper.BussinessMapper">
  <resultMap id="BaseResultMap" type="com.polymer.app.entity.BussinessDO">
    <id column="PARAM_TYPE" jdbcType="VARCHAR" property="paramType" />
    <result column="PARAM_VALUE" jdbcType="VARCHAR" property="paramValue" />
    <result column="DESCR" jdbcType="VARCHAR" property="descr" />
    <result column="REMARK" jdbcType="VARCHAR" property="remark" />
  </resultMap>
  <sql id="Base_Column_List">
    PARAM_TYPE, PARAM_VALUE, DESCR, REMARK
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from bussiness_param
    where PARAM_TYPE = #{paramType,jdbcType=VARCHAR}
  </select>
</mapper>

使用注解的方式要注意的地方:使用mybatis操作数据库有两种方式xml注入和@注解方式,两种方式在项目中是可以共存的。

注解方式:使用注解方式默认需要实体类的属性值和表的列名保持一致,否则无法映射到对应的值;或者使用@Results来手动设置映射关系,优点:看着优雅一点,方便修改,缺点:动态sql语句不好写,比较麻烦

xml形式:很常用的方式,有各种逆向工程可以生成mapper.xml文件,看着比较乱,各种标签满天飞,修改的时候很痛苦。

至于两者运行效率:不管是xml注入还是@注解注入,都是在程序启动的时候加载到bean里面的,所以理论上运行效率不会有明显的区别。

原文地址:https://www.cnblogs.com/zyf-yxm/p/10483627.html