Mybatis学习之特殊SQL的执行(六)

发布于:2025-08-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、模糊查询

Java的Mapper接口

public interface SQLMapper {
    /**
     * 根据用户名模糊查询用户信息
     */
    List<User> getUserByLike(@Param("username") String username);
}

Mapper.xml文件

  • 第一种方式:
 <select id="getUserByLike" resultType="User">
	select * from t_user where username like '%${username}%'
</select>
  • 第二种方式:
 <select id="getUserByLike" resultType="User">
	select * from t_user where username like concat('%', #{username}, '%')
</select>
  • 第三种方式:
 <select id="getUserByLike" resultType="User">
	select * from t_user where username like "%"#{username}"%"
</select>

上述三种方式,推荐是哟第二第三种。
测试文件

    @Test
    public void testGetUserByLike() throws IOException {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        List<User> user = mapper.getUserByLike("And");
        System.out.println(user);
    }

二、批量删除

Java的Mapper接口

	/**
     * 批量删除
     */
    int deleteMore(String ids);

Mapper.xml文件

    <delete id="deleteMore"> 
         delete from t_user where id in (${ids})
    </delete>

${}为推荐写法

   delete from t_user where id in (#{ids})

#{ids}不推荐使用,因为这边会自动添加单引号,变成 delete from t_user where id in (‘9,10’)。

测试文件

    @Test
    public void testDeleteMore() throws IOException {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        int result = mapper.deleteMore("9, 10");
        System.out.println(result);
    }

三、动态设置表名

Java的Mapper接口

    //查询指定表中的数据
    List<User> getUserByTableName(String tableName);

Mapper.xml文件

 <select id="getUserByTableName" resultType="User">
        select * from ${tableName}
    </select>

测试文件

    @Test
    public void testGetUserByTableName(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        List<User> t_user = mapper.getUserByTableName("t_user");
        System.out.println(t_user);
    }

四、添加功能获取自增的主键

Java的Mapper接口

    /**
     * 添加用户
     */
    void insetUser(User user);

Mapper.xml文件

    <insert id="insetUser" useGeneratedKeys="true" keyProperty="id">
        insert into t_user values(null, #{username}, #{password},#{age},#{gender},#{email})
    </insert>
  • useGeneratedKeys :设置当前标签中的sql使用了自增的主键(id)
  • keyProperty :将自增的主键的值赋值给传输到映射文件中的参数的某个属性(user.id)
    测试文件
@Test
    public void testInsetUser(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
        mapper.insetUser(new User(null, "Joy","111",11,"f","abc@qq.com"));
    }

网站公告

今日签到

点亮在社区的每一天
去签到