MyBatis之如何做到特殊SQL的执行
1、模糊查询
为避免SQL注入等问题,推荐使用第三种方式进行模糊查询
/**
* @param fuzzy 模糊
* @return {@link List }<{@link User }>
* @Description fuzzyQueryUsers 模糊查询用户
* @author summer
*/
List<User> fuzzyQueryUsers(@Param(value = "fuzzy") String fuzzy);
<!-- List<User> fuzzyQueryUsers(@Param(value = "fuzzy") String fuzzy);-->
<select id="fuzzyQueryUsers" resultType="User">
<!-- 以下就是三种查询方式 -->
<!-- select * from t_user where username like '%${fuzzy}%'-->
<!-- select * from t_user where username like concat('%',#{fuzzy},'%')-->
select * from t_user where username like "%"#{fuzzy}"%"
</select>
2、批量删除
/**
* @param ids id
* @Description batchDelete 批量删除
* @author summer
*/
Integer batchDelete(@Param(value = "ids") String ids);
<!-- Integer batchDelete(@Param(value = "ids") String ids);-->
<delete id="batchDelete">
delete from t_user where id in (${ids})
</delete>
3、动态设置表名
/**
* @param tableName 表名
* @return {@link List }<{@link User }>
* @Description getUserList 获取用户列表
* @author summer
*/
List<User> getUserList(@Param(value = "tableName" )String tableName);
<!-- List<User> getUserList(@Param(value = "tableName" )String tableName);-->
<select id="getUserList" resultType="User">
select * from ${tableName}
</select>
4、添加数据功能获取(返回)自增的主键
在插入数据时,同时获得在数据库中该数据相应自增字段属性值并返回
/**
* @param user 用户
* @return int
* @Description insertUser 添加用户信息并获取自增的主键
* @author summer
*/
int insertUser(User user);
<!--
useGeneratedKeys:表示当前添加功能使用自增的主键
keyProperty:将添加的数据的自增主键给实体类类型的的属性赋值
-->
<!-- int insertUser(User user);-->
<insert id="insertUser" useGeneratedKeys="true" keyColumn="id">
insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
</insert>