目录
MyBatis获取参数值的两种方式:
MyBatis 获取参数值的两种方式: ${} 和 #{}
${} 的本质就是字符串拼接, #{} 的本质就是占位符赋值
${} 使用字符串拼接的方式拼接 sql ,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是 #{} 使用占位符赋值的方式拼接 sql ,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
1、单个字面量类型的参数
若 mapper 接口中的方法参数为单个的字面量类型
此时可以使用 ${} 和 #{} 以任意的名称获取参数的值,注意 ${} 需要手动加单引号
2、多个字面量类型的参数
若 mapper 接口中的方法参数为多个时 此时 MyBatis 会自动将这些参数放在一个 map 集合中,以 arg0,arg1... 为键,以参数为值;以param1,param2... 为键,以参数为值;因此只需要通过 ${} 和 #{} 访问 map 集合的键就可以获取相对应的值,注意 ${} 需要手动加单引号
3、map集合类型的参数
若 mapper 接口中的方法需要的参数为多个时,此时可以手动创建 map 集合,将这些数据放在 map 中只需要通过 ${} 和 #{} 访问 map 集合的键就可以获取相对应的值,注意 ${} 需要手动加单引号
4、实体类类型的参数
若 mapper 接口中的方法参数为实体类对象时此时可以使用 ${} 和 #{} ,通过访问实体类对象中的属性名获取属性值,注意 ${} 需要手动加单引号
5、使用@Param标识参数
可以通过 @Param 注解标识 mapper 接口中的方法参数 此时,会将这些参数放在 map 集合中,以 @Param 注解的 value 属性值为键,以参数为值;以param1,param2... 为键,以参数为值;只需要通过 ${} 和 #{} 访问 map 集合的键就可以获取相对应的值,注意 ${} 需要手动加单引号
MyBatis的各种查询功能
1、查询一个实体类对象
/*** 根据用户id查询用户信息
* @param id
* @return */
User getUserById(@Param("id") int id);
<!--User getUserById(@Param("id") int id);-->
<select id="getUserById" resultType="User">select * from t_user where id = #{id}</select>
2、查询一个list集合
/*** 查询所有用户信息
* @return
*/
List<User> getUserList();
<!--List<User> getUserList();-->
<select id="getUserList" resultType="User">select * from t_user</select>
3、查询单个数据
/** 查询用户的总记录数
* @return
** 在MyBatis中,对于Java中常用的类型都设置了类型别名
* 例如:java.lang.Integer-->int|integer
* 例如:int-->_int|_integer
* 例如:Map-->map,List-->list
*/
int getCount();
<!--int getCount();-->
<select id="getCount" resultType="_integer">select count(id) from t_user</select>
4、查询一条数据为map集合
/*** 根据用户id查询用户信息为map集合
* @param id
* @return
*/
Map<String, Object> getUserToMap(@Param("id") int id);
<!--Map<String, Object> getUserToMap(@Param("id") int id);-->
<select id="getUserToMap" resultType="map">select * from t_user where id = #{id}
</select> <!--结果:{password=123456, sex=男, id=1, age=23, username=admin}-->