<insert id="addUser" parameterType="User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
insert>
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
delete>
<update id="updateUser" parameterType="User">
update user set name=#{name},pwd=#{pwd} where id = #{id}
update>
<select id="selectUserById" resultType="User">
select * from user where id = #{id}
select>
User selectUserById(@Param("id") Int id);
User selectUserByNP(@Param("username") String username,@Param("pwd") String pwd);
int addUser(User user);
参数直接传递时,对应的mapper.xml语句和上面的一样
如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
User selectUserByNP2(Map<String,Object> map);
使用map传参时,对应的mapper.xml需要对应修改:
<select id="selectUserByNP2" parameterType="map" resultType="User">
select * from user where name = #{username} and pwd = #{pwd}
select>
字符 | > | >= | < | <= | " | ’ | & |
---|---|---|---|---|---|---|---|
转义字符 | > | >= | < | <= | " | ' | & |
where create_date_time >= #{startTime}
//改为
where create_date_time >= #{startTime}
where create_date_time <![CDATA[ >= ]]> #{startTime}
sql元素标签用来定义可重复使用的SQL代码片段,使用时只需要用include元素标签引用即可,最终达到SQL语句重用的目的;同时它可以被静态地(在加载参数) 参数化,不同的属性值通过包含的实例变化,比如:
方式一:
//建立sql片段
<sql id="query_user_where">
<if test="id!=null and id!=''">
and id=#{id}
if>
<if test="username!=null and username!=''">
and username like '%${username}%'
if>
sql>
//使用include引用sql片段
<select id="findUserList" parameterType="user" resultType="user">
select * from user
<where>
<include refid="query_user_where"/>
where>
select>
//引用其它mapper.xml的sql片段
<include refid="namespace.sql片段"/>
方式二:
<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password sql>
这个 SQL 片段可以被包含在其他语句中,例如:
<select id="selectUsers" resultType="map">
select
<include refid="userColumns"><property name="alias" value="t1"/>include>,
<include refid="userColumns"><property name="alias" value="t2"/>include>
from some_table t1
cross join some_table t2
select>
属性值也可以被用在 include 元素的 refid 属性里
<include refid="${include_target}"/>