mybatis动态参数传递方式总结大全
在使用mybatis的时候报了一个这样的错误。其实知道是因为参数传递的不对,但是一直忘记了如何修改。所以在这里整理一下:
传递参数:
(1)传递一个基本数据类型的数据
通过parameterType来指定参数的类型
<select id="selectLimitSays" resultMap="saywordsMap" parameterType="Integer">
select * from s_contents limit #{page},5
</select>
(2)传递多个基本数据类型
在传递多个基本数据类型的时候,不可以指定parameterType的类型。而且在接收参数的时候需要使用规定的参数名称。
默认的是Available parameters are [arg2, arg1, arg0, param3, param1, param2]
<select id="selectByClassId" resultMap="saywordsMap">
select * from s_contents where con_type=#{arg0} limit #{arg1},5
</select>
(3)传递一个对象类型的数据
<insert id="save" parameterType="com.lxb.entity.Saywords" useGeneratedKeys="true" keyProperty="id">
INSERT INTO s_contents (`con_name`,`con_type`,`con_publish_time`,`user_id`,`secrecy_level`,`con_desc`,`img_path`)
VALUES (#{con_name},#{con_type},#{con_publish_time},#{user_id},#{secrecy_level},#{con_desc},#{img_path});
</insert>
在value中的数据必须都是parameterType的对象类型的属性,且名字一样。
(4)传递多个对象数据类型的数据
使用resultMap来实现,利用多级映射来实现。
<resultMap type="com.lxb.model.User" id="userRole">
<id property="userId" column="user_id"/>
<result property="username" column="username"/>
<result property="nickname" column="nickname"/>
<result property="password" column="password"/>
<result property="header" column="header"/>
<!-- 一对多的映射配置 -->
<collection property="role" ofType="com.lxb.model.Role">
<id property="roleId" column="role_id"/>
<result property="roleName" column="role_name"/>
<result property="description" column="role_des"/>
</collection>
</resultMap>
<!-- 根据用户的姓名或者昵称模糊查询 -->
<select id="getPagerByName" resultMap="userRole">
<bind name="curr_page" value="(pager.curr-1)*pager.limit"/>
SELECT u.*,r.description as role_des,r.role_id as role_id,r.role_name as role_name from t_user u LEFT JOIN t_user_role ur ON u.user_id = ur.user_id LEFT JOIN t_role r ON r.role_id = ur.role_id where 1=1
<if test="user.username != null and user.username != ''">
and u.username like '%${user.username}%'
</if>
<if test="user.nickname != null and user.nickname != ''">
and u.nickname like '%${user.nickname}%'
</if>
limit #{curr_page},#{pager.limit}
</select>
版权声明:本文为new_buff_007原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。