Mybatis中特殊SQL的执行
1、模糊查询
//通过用户名模糊查询用户信息
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 * from t_user where username like concat('%',#{mohu},'%')-->
<!--使用最多-->
select * from t_user where username like "%"#{mohu}"%"
</select>
@Test
public void testGetUserByLike(){
SqlSession sqlSession= SqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper=sqlSession.getMapper(SpecialSQLMapper.class);
List<User> list= mapper.getUserByLike("a");
list.forEach(System.out::println);
}
2、批量删除
//批量删除
Integer deleteMoreUser(@Param("ids") String ids);
注意这里不能用#{},因为它会自动加上单引号,会导致SQL语句变成 delete from t_user where id in(‘8,9’)
<!--Integer deleteMoreUser(@Param("ids") String ids);-->
<delete id="deleteMoreUser">
delete from t_user where id in(${ids})
</delete>
@Test
public void deleteMoreUser(){
SqlSession sqlSession=SqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper=sqlSession.getMapper(SpecialSQLMapper.class);
mapper.deleteMoreUser("8,9");
}
3、动态设置表名
//动态设置表名,查询所有的用户信息
List<User> getUserList(@Param("tablename") String tablename);
注意这里不能用#{},因为它会自动加上单引号,会导致SQL语句查询的表名多一个单引号
<!--List<User> getUserList(@Param("tablename") String tablename);-->
<select id="getUserList" resultType="User">
select * from ${tablename}
</select>
@Test
public void testGetUserList(){
SqlSession sqlSession=SqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper=sqlSession.getMapper(SpecialSQLMapper.class);
List<User> list=mapper.getUserList("t_user");
list.forEach(System.out::println);
}
4、添加功能获取自增的主键
//添加用户信息,并获取自增的主键
void insertUser(User user);
useGeneratedKeys:表示当前添加功能使用自增的主键;
keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的实体类类型的参数user对象的某个属性中
<!--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(){
SqlSession sqlSession=SqlSessionUtil.getSqlSession();
SpecialSQLMapper mapper=sqlSession.getMapper(SpecialSQLMapper.class);
User user= new User(null,"xiaoming","123222",23,"男","123456@qq.com");
mapper.insertUser(user);
System.out.println(user);
}