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();
        }
相关推荐
李少兄1 小时前
解决 org.springframework.context.annotation.ConflictingBeanDefinitionException 报错
java·spring boot·mybatis
一只大袋鼠2 小时前
分布式 ID 生成:雪花算法原理、实现与 MyBatis-Plus 实战
分布式·算法·mybatis
码农小卡拉3 小时前
MyBatis-Flex 全面解析与实战教程:轻量高效的 MyBatis 增强方案
java·mybatis
弓弧名家_玄真君3 小时前
在ubuntu中安装redis
前端·bootstrap·mybatis
qq_54702617918 小时前
Redis 常见问题
数据库·redis·mybatis
小北方城市网1 天前
Spring Boot 多数据源与事务管理实战:主从分离、动态切换与事务一致性
java·开发语言·jvm·数据库·mysql·oracle·mybatis
小马爱打代码1 天前
MyBatis:缓存体系设计与避坑大全
java·缓存·mybatis
alien爱吃蛋挞1 天前
【JavaEE】万字详解Mybatis(上)
数据库·java-ee·mybatis
煎饼皮皮侠2 天前
设计一个分页插件之二【基于mybatis实现分页插件】
mybatis·分页插件
czlczl200209252 天前
MyBatis-Plus SQL自动填充字段
sql·tomcat·mybatis