mybatis入门程序:向数据库中添加用户&&自增主键和非自增主键的返回

1、添加用户

(1)映射文件中添加SQL语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace命名空间,作用就是对SQL进行分类化管理,理解为SQL的隔离-->
<mapper namespace="test">
 <!--添加用户-->
    <insert id="insertUser" parameterType="edu.tjut.pojo.User">
        INSERT INTO user(username,birthday,sex,address) VALUE(#{username},#{birthday},#{sex},#{address})
    </insert>
  </mapper>

其中:parameterType:指定输入参数类型是pojo类
​ #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值

(2)java程序
 // 添加用户
    @Test
    public void insertUser() throws IOException {

        //mybatis配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 创建需要添加的对象
        User user = new User();
        user.setUsername("李大明");
        user.setBirthday(new Date(1996-1900,8-1,24+1));
        user.setSex("女");
        user.setAddress("北京");
        //通过SqlSession操作数据库
        sqlSession.insert("test.insertUser",user);
        //提交事务
        sqlSession.commit();
        //获取用户信息的主键
        //System.out.println("这个是主键:"+user.getId());
        //释放资源
        sqlSession.close();
    }

2、自增主键的返回

mysql自增主键,执行insert提交之前自动生成一个自增主键(这里是指用户的id),通过mysql函数获取刚插入记录的自增主键LAST_INSERT_ID(),在insert之后调用

<insert id="insertUser" parameterType="edu.tjut.pojo.User"><!-- 将刚插入的主键返回,返回到user对象中
​			SELECT LAST_ID():得到刚insert进去记录的主键值,只适用于自增主键
​			keyProperty:将查询到的主键值设置到parameterType指定的对象的那个属性
​			order:SELECT LAST_INSERT_ID()的执行顺序,相当于insert语句来说它的执行顺序
​			resultType:指定SELECT LAST_INSERT_ID()的结果类型
​	 	--><selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer" >
​			SELECT LAST_INSERT_ID()
​		</selectKey> 
​	 	insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
​	 </insert>

3、非自增主键的返回:

​ 使用mysql的uuid()函数生成主键,需要修改表中id字段类型为string,长度设置成35位。
​ 执行思路:
​ 先通过uuid()查询到主键,将主键输入到sql语句中
​ 执行uuid()语句顺序相对于insert语句之前执行

(1)映射文件中添加SQL语句:

	<!-- 使用mysql的uuid()生成主键
​		执行过程:
​			首先通过uuid()得到主键,将主键设置成user对象的id属性中
​			其次在insert执行时,从user对象中取出id属性值
​		 --><!--添加用户-->
<insert id="insertUser" parameterType="edu.tjut.pojo.User"><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>

4、java程序

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值