CGB2111Mybatis

1.动态SQL

1.1动态更新
测试类

@Test
    public void testUpdate(){
        User user = new User();
        user.setId(5).setName("御弟哥哥").setAge(18);  //sex=null
        userMapper.updateUser(user);
        System.out.println("修改操作成功!!!");
}

Mapper接口

void updateUser(User user);

Mapper映射

    <update id="updateUser">
        update demo_user
            <set>
                <if test="name !=null">name=#{name},</if>
                <if test="age !=null">age=#{age},</if>
                <if test="sex !=null">sex=#{sex}</if>
            </set>
            where id=#{id}
    </update>

1.2动态SQL
choos when otherwise

如果不想使用所有的条件可以使用choose 类似于java中的switch 语法
如果name有值,则按照name查询, if
如果age有值,则按照age查询, else-if
否则按照sex查询数据. else

测试类

 @Test
    public void testFindChoose(){
        User user = new User();
        user.setName("御弟哥哥").setAge(18).setSex("男");
        List<User> list = userMapper.findUserChoose(user);
        System.out.println(list);
    }

Mapper接口

List<User> findUserChoose(User user);

Mapper映射

    <select id="findUserChoose" resultType="User">
        select * from demo_user where
            <choose>
                <when test="name !=null">name=#{name}</when>
                <when test="age  !=null">age=#{age}</when>
                <otherwise>sex = #{sex}</otherwise>
            </choose>
    </select>

2.数据封装-resultMap

数据封装的要求 sql的结果集中的数据,必须与对象中的属性一致.
表中的数据:

Pojo属性
在这里插入图片描述
测试类
在这里插入图片描述
测试接口
在这里插入图片描述
Mapper映射
在这里插入图片描述

3.Mybatis

3.1常见的关联性

核心从一头出发看向另一头
1.一对一

员工对应一个部门 用户对应一个ID

2.一对多

一个老师对应多个学生

3.多对一

多对一本质还是一对一

4.多对多

一个老师对应多个学生 一对多
一个学生对应多个老师 一对多 双向一对多

3.2编辑表
表1:emp
字段 id name age dept_id
在这里插入图片描述
表2:dept
在这里插入图片描述
3.3关联关系实现
编辑Emp对象
在这里插入图片描述
编辑Dept对象在这里插入图片描述

代码搭建
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值