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();
        }
相关推荐
90后小陈老师8 小时前
用户管理系统 05 实现后端注册功能 | Java新手实战 | 最小架构 | 期末实训 | Java+SpringBoot+Vue3
java·开发语言·spring boot·后端·spring·maven·mybatis
好学且牛逼的马11 小时前
【MyBatis-Plus | 常见问题与面试重点】
面试·mybatis
卷到起飞的数分11 小时前
5.MyBatis持久(dao)层框架
java·数据库·mybatis
一点事12 小时前
ruoyi:集成mybatisplus实现mybatis增强
java·开发语言·mybatis
Dreamboat-L17 小时前
IDEA中在springboot项目中整合Mybatis时@Autowired时,提示Could not autowire解决方案
spring boot·intellij-idea·mybatis
v***85719 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
h***346319 小时前
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
spring boot·tomcat·mybatis
爆更小哇1 天前
MyBatis的TypeHandler :优雅地实现数据加密与解密
数据库·后端·mybatis
java1234_小锋1 天前
讲讲Mybatis的一级、二级缓存?
java·开发语言·mybatis
情怀姑娘1 天前
面试题---------------场景+算法
java·算法·mybatis