1、模糊查询
模糊查询三种解决方案:
<select id="testMohu" resultType="com.lucky.pojo.User">
<!--select * from t_user where username like "%"#{mohu}"%"-->
<!--select * from t_user where username like '%${mohu}%'-->
<!--select * from t_user where username like concat('%',#{mohu},'%')-->
</select>
直接使用#{}的问题:select * from t_user where username like ‘%#{mohu}%’
select * from t_user where username like '%#{mohu}%'被解析成
select * from t_user where username like '%?%
然后JDBC setParam的时候找不到参数,因此报错。因为 解析后的 ? 被当成了字符串的一部分。
2、批量删除
/**
* 批量删除
* @param ids
* @return
*/
int deleteMore(@Param("ids") String ids);
<delete id="deleteMore">
delete from t_user where id in (${ids})
</delete>
3、动态设置表名
/**
* 动态设置表名,查询所有的用户信息
* @param tableName
* @return
*/
List<User> getAllUser(@Param("tableName") String tableName);
<select id="getAllUser" resultType="User">
select * from ${tableName}
</select>
4、添加功能获取自增的主键
/**
* 添加用户信息
* @param user
* @return
* useGeneratedKeys:设置使用自增的主键
* keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参
数user对象的某个属性中
*/
int insertUser2(User user);
<insert id="insertUser2" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password},#{age},#{sex})
</insert>
注意怎样使用自增主键
int row = userMapper.insertUser(user);
// row还是影响行数
System.out.println(row);
// 此时user的id已经被赋值为自增主键了
System.out.println(user.getId());