1.@Param注解
在Mapper接口中方法形参中传递多个参数时,使用@Param注解
在xml文件中填充占位符时可以直接引用形参名
XxxMapper.java文件
import org.apache.ibatis.annotations.Param;
public interface XxxMapper{
/**根据名称查询总数*/
int queryInfoByNameCount(@Param("paramName") String name);
/**根据名称和代码查询总数*/
int queryInfoByNameAndCodeCount(@Param("paramName") String name,@Param("code") int code);
/**根据名称模糊查询总数*/
int queryInfoByNameLikeCount(@Param("paramName") String name);
/**根据名称模糊查询总数*/
int queryInfoByNameLikeCount2(String name);
}
XxxMapper.xml文件
......略
<select id="queryInfoByNameCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME=#{paramName}
</select>
<select id="queryInfoByNameAndCodeCount" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME=#{paramName} AND CODE=#{code}
</select>
<select id="queryInfoByNameLikeCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME LIKE '%{paramName}%'
</select>
<select id="queryInfoByNameLikeCount2" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME LIKE '%{value}%'
</select>
......略
说明:
(1)不使用Param注解,Mapper接口方法参数类型为基本数据类型时,此方法只能有一个参数
xml文件中,如果使用#{},则花括号中的参数名必须和接口形参名一致或者写成value
xml文件中,如果使用${},则花括号中的参数名必须写成value
(2)使用@Param注解,Mapper接口方法参数类型为基本数据类型时,此方法可以有多个参数,
在参数前面加上@Param注解
xml文件中,使用#{}或${},则花括号中的参数名必须和接口形参中注解的value属性值一致
如:int queryInfoByNameCount(@Param("paramName") String name);
<select id="queryInfoByNameCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME=#{paramName}
</select>
或者
int queryInfoByNameLikeCount(@Param("paramName") String name);
<select id="queryInfoByNameLikeCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME LIKE '%{paramName}%'
</select>
2.mybatis中jdbcType和javaType对应关系
JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL[color=red][/color]
在Mapper接口中方法形参中传递多个参数时,使用@Param注解
在xml文件中填充占位符时可以直接引用形参名
XxxMapper.java文件
import org.apache.ibatis.annotations.Param;
public interface XxxMapper{
/**根据名称查询总数*/
int queryInfoByNameCount(@Param("paramName") String name);
/**根据名称和代码查询总数*/
int queryInfoByNameAndCodeCount(@Param("paramName") String name,@Param("code") int code);
/**根据名称模糊查询总数*/
int queryInfoByNameLikeCount(@Param("paramName") String name);
/**根据名称模糊查询总数*/
int queryInfoByNameLikeCount2(String name);
}
XxxMapper.xml文件
......略
<select id="queryInfoByNameCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME=#{paramName}
</select>
<select id="queryInfoByNameAndCodeCount" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME=#{paramName} AND CODE=#{code}
</select>
<select id="queryInfoByNameLikeCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME LIKE '%{paramName}%'
</select>
<select id="queryInfoByNameLikeCount2" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME LIKE '%{value}%'
</select>
......略
说明:
(1)不使用Param注解,Mapper接口方法参数类型为基本数据类型时,此方法只能有一个参数
xml文件中,如果使用#{},则花括号中的参数名必须和接口形参名一致或者写成value
xml文件中,如果使用${},则花括号中的参数名必须写成value
(2)使用@Param注解,Mapper接口方法参数类型为基本数据类型时,此方法可以有多个参数,
在参数前面加上@Param注解
xml文件中,使用#{}或${},则花括号中的参数名必须和接口形参中注解的value属性值一致
如:int queryInfoByNameCount(@Param("paramName") String name);
<select id="queryInfoByNameCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME=#{paramName}
</select>
或者
int queryInfoByNameLikeCount(@Param("paramName") String name);
<select id="queryInfoByNameLikeCount" parameterType="string" resultType="int">
SELECT COUNT(*) FROM TABLE WHERE NAME LIKE '%{paramName}%'
</select>
2.mybatis中jdbcType和javaType对应关系
JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL[color=red][/color]