尚硅谷Mybatis学习笔记第7节特殊SQL的执行

115 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

7、特殊SQL的执行

7.1、模糊查询

    /**
     * 通过用户名模糊查询用户信息
     * @param mohu
     * @return
     */
    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}%'
    %代表任意个数的任意字符,包括0个字符
    '%#{mohu}%'
    #{mohu}会当作占位符解析,会在两边自动加上单引号,不过?在单引号里就不是占位符了,会当成字符串的一部分
    改成$就可以
    -->
    <!--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>

7.2、批量删除

    /**
     *批量删除
     * @param ids
     */
    void deleteMoreUser(@Param("ids")String ids);
</select>

    <!--void deleteMoreUser(@Param("ids")String ids);//ids:9,10-->
    <delete id="deleteMoreUser">
        delete from t_user where id in(${ids})
    </delete>

7.3、动态设置表名

    /**
     * 动态设置表名,查询用户信息
     * @return
     */
    List<User> getUserList(@Param("tableName")String tableName);
    <!--List<User> getUserList(@Param("tableName")String tableName);-->
    <select id="getUserList" resultType="User">
        select * from ${tableName}
    </select>

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

场景模拟: t_clazz(clazz_id,clazz_name) t_student(student_id,student_name,clazz_id) 1、添加班级信息 2、获取新添加的班级的id 3、为班级分配学生,即将某学的班级id修改为新添加的班级的id`

    /**
     * 添加用户信息并获取自增的主键
     * @param user
     */
    void insertUser(User user);
    <!--void insertUser(User user);-->
    <!--
    useGeneratedKeys 表示当前的添加功能使用自增的主键
    keyProperty 将添加的数据的自增主键为实体类类型的参数的属性赋值
    -->
    <!--获取自增的主键为什么不用返回值,因为增删改返回值是固定的int,即影响的行数,这时就考虑将要获得的值放入属性中去-->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
    </insert>