public interface UserMapper {
//mybatis使用mapper动态代理
//4大原则,一个注意
//1.接口中的方法名需要与对应mapper.xml的id一致
//2.接口中的返回值需要与对应mapper.xml的返回值类型保持一致
//3.接口中的参数需要与对应mapper.xml的参数类型、个数、参数名保持一致
//4.对应mapper.xml的名字空间需要修改成对应接口的全包名
//注意:mapper动态代理根据返回值类型,mybatis会自动选择调用selectone还是selectlist....
//根据用户id获取用户信息
public User selectUserById(Integer uid);
//根据用户名模糊查询用户信息
public List<User> selectUserByName(String uname);
//插入用户
public void insertUser(User user);
//根据用户id删除用户
public void deleteUserById(Integer uid);
//更新用户信息
public void updateUser(User user);
//多参数查询
//用map封装条件
public List<User> selectByMap(Map<String,Object> map);
//用list封装条件
public List<User> selectByList(List<Integer> testlist);
//用数组封装条件
public List<User> selectByArray(Integer[] ids);
//直接传多个参数
public User selectByMoreParamter(String uname,Integer age,String address);
}
2.mapper映射文件
<?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.spring_mybatis_demo.mapper.UserMapper">
<!-- #{}占位符 -->
<select id="selectUserById" parameterType="Integer" resultType="User">
select * from t_user where uid = #{uid}
</select>
<!-- ${value}字符串拼接 容易发生sql注入,建议使用占位符#{}-->
<select id="selectUserByName" parameterType="String" resultType="User">
<!-- select * from t_user where uname like '%${value}%' -->
select * from t_user where uname like concat('%',#{uname},'%')
</select>
<insert id="insertUser" parameterType="User">
insert into t_user values(null,#{uname},#{age},#{address})
</insert>
<delete id="deleteUserById" parameterType="Integer">
delete from t_user where uid=#{uid}
</delete>
<update id="updateUser" parameterType="User">
<!-- update t_user set uname=#{uname},age=#{age},address=#{address} where uid=#{uid} -->
update t_user
<!-- set标签可以拼接update条件,同时能够删除多余的符号,平时拼接字符串总是需要手动去除多余的逗号什么的分隔符 -->
<!-- <set>
<if test="uname!=null and address!=''">uname=#{uname},</if>
<if test="age!=null">age=#{age},</if>
<if test="address!=null and address!=''">address=#{address}</if>
</set> -->
<trim prefix="set" suffixOverrides=",">
<if test="uname!=null and address!=''">uname=#{uname},</if>
<if test="age!=null">age=#{age},</if>
<if test="address!=null and address!=''">address=#{address}</if>
</trim>
where uid=#{uid}
</update>
<select id="selectByMap" parameterType="hashmap" resultType="User">
select * from t_user where uname like concat('%',#{uname},'%') and uid<#{uid}
</select>
<select id="selectByList" resultType="User">
select * from t_user where uid in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="selectByArray" resultType="User">
select * from t_user where uid in
<foreach collection="array" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="selectByMoreParamter" resultType="User">
<!-- select * from t_user where uname like concat('%',#{param1},'%') and age = #{param2} and address = #{param3} -->
select * from t_user where uname like concat('%',#{arg0},'%') and age = #{arg1} and address = #{arg2}
</select>
</mapper>