MyBatis特殊SQL的执行

文章目录

一、模糊查询

java 复制代码
 /**
     * 通过用户名模糊查询用户信息
     * @param mohu
     * @return
     */

    List<User> getUserByLike(@Param("mohu") String mohu);
xml 复制代码
<!--List<User> getUserByLike(@Param("mohu") String mohu);-->
    <select id="getUserByLike" resultType="com.itheima.mybatis.pojo.User">
        select * from tb_user where username like '%${mohu}%';
    </select>
java 复制代码
@Test
    public void testGetUserByLike(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
        List<User> list = mapper.getUserByLike("a");
        list.forEach(System.out::println);

二、批量删除

java 复制代码
 /**
     * 批量删除
     * @param ids
     */
    void deleteMoreUser(@Param("ids") String ids);```
```xml
<!--void deleteMoreUser(@Param("ids") String ids);;-->
    <delete id="deleteMoreUser">
        delete from tb_user where id in ${ids};
    </delete>
java 复制代码
    /**
     * 批量删除
     */
 @Test
    public void testDeleteMoreUser() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
        mapper.deleteMoreUser("9,10");
    }

三、动态设置表名

java 复制代码
/**
     *动态设置表名,查询用户信息
     * @param tableName
     * @return
     */
    List<User> getUserList(@Param("tableName") String tableName);
xml 复制代码
    <!--List<User> getUserList(String tableName);-->
    <select id="getUserList" resultType="User">
        select * from ${tableName};
    </select>
java 复制代码
    /**
     * 动态设置表名,查询用户信息
     */
    @Test
    public void testGetUserList() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
        List<User> list = mapper.getUserList("tb_user");
        list.forEach(System.out::println);
    }

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

场景模拟:

t_clazz(clazz_id,clazz_name)

t_student(student_id,student_name,clazz_id)

1、添加班级信息

2、获取新添加的班级的id

3、为班级分配学生,即将某学的班级id修改为新添加的班级的id

java 复制代码
/**
 * 添加用户信息
 * @param user
 * @return
 * useGeneratedKeys:设置使用自增的主键
 * keyProperty:因为增删改有统一的返回值是受影响的行数,因此只能将获取的自增的主键放在传输的参 
数user对象的某个属性中
 */
int insertUser(User user);
xml 复制代码
<!--int insertUser(User user);-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
 insert into t_user values(null,#{username},#{password},#{age},#{sex})
</insert>
java 复制代码
public void testJDBC(){
        try {
            Class.forName("");
            Connection connection = DriverManager.getConnection("","","");
            String sql = "insert into tb_user values()";
            PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            ps.executeUpdate();
            ResultSet resultSet = ps.getGeneratedKeys();
            resultSet.next();
            resultSet.getInt(1);
        } catch (Exception e) {
            e.printStackTrace();
        }
相关推荐
BillKu2 小时前
Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法
java·tomcat·mybatis
烙印6014 小时前
MyBatis原理剖析(二)
java·数据库·mybatis
用户696518007169 小时前
mybatis分页插件
mybatis
李少兄1 天前
解决MyBatis参数绑定中参数名不一致导致的错误问题
mybatis
异常君1 天前
MyBatis 中 SqlSessionFactory 和 SqlSession 的线程安全性深度分析
java·面试·mybatis
bing_1582 天前
跨多个微服务使用 Redis 共享数据时,如何管理数据一致性?
redis·微服务·mybatis
云之兕2 天前
MyBatis 的动态 SQL
数据库·sql·mybatis
loser.loser2 天前
QQ邮箱发送验证码(Springboot)
java·spring boot·mybatis
毅航2 天前
Trae复刻Mybatis之旅(一):创建SqlSession会话,构建代理
后端·mybatis·trae
潮流coder2 天前
mybatis的if判断==‘1‘不生效,改成‘1‘.toString()才生效的原因
java·tomcat·mybatis