• mybatis添加数据返回主键


    程序结构图:



    表结构:


    创表sql:

    Create Table

    CREATE TABLE `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(200) DEFAULT NULL,
      `password` varchar(32) DEFAULT NULL,
      `sex` char(1) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8


    User.xml

    <?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命名空间特殊作用: 如果使用mapper动态代理方法,这里就需要配置mapper接口地址-->
    <mapper namespace="test">

    <!-- 添加用户 -->
    <!-- 
    parameterType:输入参数的类型
    注意:如果输入参数的类型是pojo,那么#{}中变量的名字要和pojo类的属性名一致,否则会出现错误
    -->
    <insert id="insertUser" parameterType="com.itheima.mybatis.po.User">
    <!-- 
    获取主键id,这个主键id的获获取在insert语句执行之后,通过执行SELECT LAST_INSERT_ID()语句来获得
    -->
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
    SELECT LAST_INSERT_ID()
    </selectKey>
    INSERT INTO users(username,password,sex,birthday) 
               VALUES(#{username},#{password},#{sex},#{birthday})
    </insert>

    </mapper>

    当然也需要在全局配置文件中加入User.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
    <environment id="development">
    <transactionManager type="JDBC" />
    <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf-8" />
    <property name="username" value="root" />
    <property name="password" value="123" />
    </dataSource>
    </environment>
    </environments>

    <!-- 配置mapper映射文件 -->
    <mappers>
    <mapper resource="sqlmap/User.xml"/>
    </mappers>
    </configuration>


    测试代码:

    @Test
    public void testInserUser() throws IOException{
    // 加载配置文件
    String resource = "SqlMapConfig.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // 通过配置文件获得SqlSessionFactory对象
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    // 通过sqlSessionFactory对象获得sqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 执行插入操作
    // 定义一个要插入的对象
    User user = new User();
    user.setUsername("李四");
    user.setPassword("123");
    user.setBirthday(new Date());
    sqlSession.insert("test.insertUser",user);

    // 测试是否获得主键id
    int id = user.getId();
    System.out.println(id);

    // 提交事务
    sqlSession.commit();

    // 关闭资源
    sqlSession.close();
    }

    执行结果:

    控制台打印:


    数据库查看:


  • 相关阅读:
    [置顶] app后端设计--总目录
    Centos6.5 nginx+nginx-rtmp配置流媒体服务器
    利用nginx搭建RTMP视频点播、直播、HLS服务器
    如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
    使用pngquant命令近乎无损压缩PNG图片大小减少70%左右
    字符型图片验证码识别完整过程及Python实现
    python PIL Image模块
    app后端设计(12)--图片的处理
    linux 下如何抓取HTTP流量包(httpry)
    EHcache缓存框架详解
  • 原文地址:https://www.cnblogs.com/chunguang-yao/p/10666445.html
Copyright © 2020-2023  润新知