Mybatis --- 自定义映射、特殊和动态SQL

一、特殊SQL的执行

1.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}%'-->
        <!--select * from t_user where username like concat('%',#{mohu},'%')-->
        select * from t_user where username like "%"#{mohu}"%"
    </select>
    @Test
    public void testGetUserByLike() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);

        List<User> userList = mapper.getUserByLike("六");
        for (User user : userList) {
            System.out.println(user);
        }
    }

 

1.2、批量删除

    /**
     * 批量删除
     * @param ids
     * @return
     */
     void deleteMoreUser(@Param("ids") String ids);
    <!--int deleteMoreUser(@Param("ids") String ids);-->
    <delete id="deleteMoreUser">
        delete from t_user where id in (${ids})
    </delete>
    @Test
    public void testDeleteMoreUser() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);
        
        mapper.deleteMoreUser("4,5,6,7,8,9,10");
    }

 

1.3、动态设置表名

    /**
     * 动态设置表名,查询所有的用户信息
     * @param tableName
     * @return
     */
    List<User> getUserList(@Param("tableName") String tableName);
    <!--List<User> getUserList(@Param("tableName") String tableName);-->
    <select id="getUserList" resultType="User">
        select * from ${tableName}
    </select>
    @Test
    public void testGetUserList() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);

        List<User> list = mapper.getUserList("t_user");
        for (User user : list) {
            System.out.println(user);
        }
    }

 

1.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);
    <!--int insertUser(User user);-->
    <!--
        useGeneratedKeys:设置使用自增的主键
        keyProperty:因为增删改有统一的返回值是受影响的行数,
        因此只能将获取的自增的主键放在传输的参数user对象的某个属性中
    -->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
    </insert>
    @Test
    public void testInsertUser() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        SpecialSQLMapper mapper = sqlSession.getMapper(SpecialSQLMapper.class);

        User user = new User(null,"李四", "123456", 10, "男", "lisi@qq.com");
        mapper.insertUser(user);
        System.out.println(user);
        //User{id=11, username='李四', password='123456', age=10, gender='男', email='lisi@qq.com'}
    }

 

 

二、自定义映射resultMap

2.1、resultMap处理字段和属性的映射关系

若字段名和实体类中的属性名不一致,但是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值