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里面的,所以理论上运行效率不会有明显的区别。