2.15 Mybatis——权限管理模拟添加(下)

目录

问题描述

知识点补充:

        1.获取添加操作中自动生成字段的值方法:   

        2.批量执行多条sql

代码实现


问题描述

        依旧使用之前权限管理登录模拟的案例,进行添加用户并选择用户角色,添加用户表的同时用户_角色中间表(t_user_role)也要添加相应的用户信息,一个用户可以有多个角色(动态sql遍历)。

知识点补充:

1.获取添加操作中自动生成字段的值方法:   

                useGeneratedKeys——开启获取表中自增属性功能(此处为用户uid)
                keyColumn——指定数据库中字段名
                keyProperty——实体类中字段对应属性名

UserMapper层:

/*
    在映射文件中开启获取用户自增属性,并指定表中字段名和实体类中对应属性名。
*/
<insert id="addUser" parameterType="com.zx.pojo.User" useGeneratedKeys="true" keyColumn="uid" keyProperty="uid">
            insert into t_user values (null,#{uname},#{pwd},#{age})
</insert>

测试是否获取成功:


//获取新添加用户的uid(自增属性,需要获取)
int uid = user.getUid();
System.out.println(uid);

2.批量执行多条sql

需要在连接数据库的url后追加  &amp;allowMultiQueries=true,允许批量执行多条sql。

代码实现

(1)UserDao.java层接口:

//添加用户——需绑定角色
    void addUser(User user);

//添加用户角色
 void addUserRole(User user);

(2)UserMapper.xml:

<mapper namespace="com.zx.dao.UserDao">

        <!--
            获取添加操作中自动生成字段的值:
                useGeneratedKeys开启获取表中自增属性的功能(此处为用户uid)
                keyColumn数据库中字段名
                keyProperty实体类中字段对应属性名
            此处获取用户uid,用于下面添加用户角色使用。
        -->
        <insert id="addUser" parameterType="com.zx.pojo.User" useGeneratedKeys="true" keyColumn="uid" keyProperty="uid">
            insert into t_user values (null,#{uname},#{pwd},#{age})
        </insert>

        <!--添加用户角色-->
        <insert id="addUserRole" parameterType="com.zx.pojo.User">
            /*
                用户可能有多个角色,需要遍历输入多条sql
                    collection——用户实体类中角色实体类的属性名
                    item——遍历的集合项属性
                    separator——添加分割符,多条sql语句之间用“;”隔开
                注:需要在 mybatis-config.xml连接数据库的url后追加  &amp;allowMultiQueries=true,允许批量执行多条sql
            */
            <foreach collection="roles" item="role" separator=";">
                insert into t_user_role values (null,#{uid},#{role.rid})
            </foreach>
        </insert>

</mapper>

(3)测试运行:

    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);

        //添加用户
        User user=new User();
        user.setUname("王哈哈");
        user.setPwd("123456");
        user.setAge(25);
        userDao.addUser(user);

        //获取新添加用户的uid(自增属性,需要获取)
        int uid = user.getUid();
        System.out.println(uid);

        //添加角色——添加两个角色
        Role role=new Role();
        role.setRid(2);
        Role role1=new Role();
        role1.setRid(3);

        List<Role> roles=new ArrayList<>();
        roles.add(role);
        roles.add(role1);
        user.setRoles(roles);

        userDao.addUserRole(user);

        sqlSession.commit();
        sqlSession.close();

    }

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值