JavaWeb学习笔记-mybatis-05-添加用户

映射文件

    <!--添加用户-->
    <!--parameterType:指定输入的pojo类型-->
    <insert id="insertUser" parameterType="com.sws.entity.User">
        insert into user(id,username,birthday,sex,address) value (#{id},#{username},#{birthday},#{sex},#{address})

    </insert>
    //添加用户信息
    public void insertUser() throws IOException {
        //mybatis配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //插入用户对象
        User user = new User();
        user.setUsername("xxx");
        user.setBirthday(new Date());
        user.setSex("1");
        user.setAddress("xxx");
        //通过sqlSession操作数据库
        sqlSession.insert("test.insertUser",user);
        //需要执行提交
        sqlSession.commit();
        sqlSession.close();
    }

自增主键返回

select last_insert_id()
<!--添加用户-->
    <!--parameterType:指定输入的pojo类型-->
    <insert id="insertUser" parameterType="com.sws.entity.User">
        <!--将插入数据的主键返回,返回到用户对象中-->
        <!--用于得到刚刚插入的主键值,只适用于自增主键
            keyProperty:将查询到的主键设置到parameterType所设置的对象的对应属性中
            order:执行顺序,相对于insert
        -->
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            select last_insert_id()
        </selectKey>
        insert into user(id,username,birthday,sex,address) value (#{id},#{username},#{birthday},#{sex},#{address})

    </insert>

非自增主键查询(uuid())
先通过uuid查找主键,再将主键输入到sql中

    <insert id="insertUser2" parameterType="com.sws.entity.User">
        <!--使用mysql的uuid(),查询非自增主键
        首先通过uuid()获得主键,设置到user对象id中
        -->
        <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
            select uuid()
        </selectKey>
        insert into user(id,username,birthday,sex,address) value (#{id},#{username},#{birthday},#{sex},#{address})

    </insert>

如果是oracle,”uuid()”改为”序列名.nextval()”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值