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

    科技2022-07-10  99

    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程序

    Processed: 0.009, SQL: 8