通过用户名模糊查询用户信息 模糊查询时使用#{}不可取,因为系统编译时会将#{}转为?(占位符), 并将?和%%看作是一串字符,并不会实现占位符的功能 解决方法如下:
方法一:使用¥{}(例:'%<span data-formula="{mohu}%')
方法二:使用concat拼接字符(例:'%',#{mohu},'%')
方法三:"%"#{mohu}"%"
进行模糊查询时使用方法三方便(建议) " aria-hidden="true">{mohu}%')
方法二:使用concat拼接字符(例:'%',#{mohu},'%')
方法三:"%"#{mohu}"%"
进行模糊查询时使用方法三方便(建议)
List<User> getUserByLike(@Param("mohu") String mohu);
<!--List<User> getUserByLike(@Param("mohu")String mohu);-->
<select id="getUserByLike" resultType="User">
<!--方法三-->select * from t_user where username like "%"#{mohu}"%"
</select>
<!--方法二:select * from t_user where username like concat('%',#{mohu},'%')-->
<!--方法一:select * from t_user where username like '%${mohu}%'-->
@Test
public void testSpecialSQLMapper() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
List<User> like = mapper.getUserByLike("y");
like.forEach(System.out::println);
}
批量删除用户 本次仅针对于delete from t_user where id in ()这种删除方法 可用¥{}不可用#{} 因为#{}会自动加上单引号,sql语句会变成delete from t_user where id in ('目标值'),是不对的 而¥{}则需要手动加入单引号,所以delete from t_user where id in (¥{ids})会变成delete from t_user where id in (目标值)是对的
void deleteMoreUser(@Param("ids") String ids);
<!--void deleteMoreUser(@Param("ids")String ids);ids:9,10-->
<delete id="deleteMoreUser">
delete from t_user where id in (${ids})
</delete>
@Test
public void testDeleteMoreUser() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
mapper.deleteMoreUser("3,4");
}
动态设置表名,查询用户信息 可用¥{}不可用#{},因为#{}会自动加上单引号,所以select * from #{目标值}会变成select * from '目标值',是错的,而¥{}则要手动加入单引号,所以select * from ¥{目标值}会变成select * from 目标值是对的
List<User> getUserList(@Param("tablename") String tablename);
<!--List<User> getUserList(@Param("tablename") String tablename);-->
<select id="getUserList" resultType="User">
select * from ${tablename}
</select>
@Test
public void testGetUserList() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
List<User> userList = mapper.getUserList("t_user");
userList.forEach(System.out::println);
}
添加用户信息,并获取自增的主键 useGeneratedKeys:表示添加功能使用自增的主键 keyProperty:将添加的数据的自增主键为实体类类型的参数的属性赋值
void insertUser(User user);
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values (null,#{username},#{password},#{age},#{gender},#{email})
</insert>
@Test
public void testInsertUser() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
User user = new User(null,"xiaio","dadada",12,"男","dadadada");
mapper.insertUser(user);
}
本文章使用limfx的vscode插件快速发布