Mybatis学习第5节 -- 插入并获取ID

Posted 积水成渊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis学习第5节 -- 插入并获取ID相关的知识,希望对你有一定的参考价值。

插入过程

接口
int insertShop(Shop shop);
映射
<insert id="insertShop" parameterType="Shop" useGeneratedKeys="true" keyProperty="id">
INSERT INTO `oto`.`tb_shop` (
`owner_id`,
`area_id`,
`shop_category_id`,
`shop_name`,
`shop_desc`,
`shop_addr`,
`phone`,
`shop_img`,
`priority`,
`advice`
)
VALUES
(
#{ownerId},
#{areaId},
#{categoryId},
#{name},
#{desc},
#{addr},
#{phone},
#{image},
#{priority},
#{advice}
) ;
</insert>
测试
@Test
public void testInsertShop() {
String template = "查询结果: %s";
SqlSession session = MyBatisUtil.getSqlSession();
ShopMapper mapper = session.getMapper(ShopMapper.class);

Shop shop = new Shop();
shop.setOwnerId(1);
shop.setName("Hello Jack");
mapper.insertShop(shop);

session.commit();
session.close();

System.out.printf(template, shop);
}
结果
Opening JDBC Connection
Created connection 118555812.
Setting autocommit to false on JDBC Connection [[email protected]]
==> Preparing: INSERT INTO `oto`.`tb_shop` ( `owner_id`, `area_id`, `shop_category_id`, `shop_name`, `shop_desc`, `shop_addr`, `phone`, `shop_img`, `priority`, `advice` ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ; 
==> Parameters: 1(Integer), null, null, Hello Jack(String), null, null, null, null, null, null
<== Updates: 1
Committing JDBC Connection [[email protected]]
Resetting autocommit to true on JDBC Connection [[email protected]]
Closing JDBC Connection [[email protected]]
Returned connection 118555812 to pool.
查询结果: Shop{id=41, ownerId=1, areaId=null, categoryId=null, name=‘Hello Jack‘, desc=‘null‘, addr=‘null‘, phone=‘null‘, image=‘null‘, priority=null, createTime=null, lastEditTime=null, enableStatus=null, advice=‘null‘}

 

第一种方法: 在insert语句标签中指明pojo对象中对应的id

<insert id="insertShop" parameterType="Shop" useGeneratedKeys="true" keyProperty="id">

第二种方法: 全局配置

在mybatis-config.xml文件中进行配置
<setting name="userGeneratedKeys" value="true" />
在mapper里面仅设置keyProperty

第三种方法: 不支持自增的数据库比如说Oracle

没有学过Oracle,等女朋友来教我

以上是关于Mybatis学习第5节 -- 插入并获取ID的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis学习第22节 -- 高级结果映射 构造方法映射

Mybatis学习第20节 -- 嵌套结果

Mybatis学习第8节 -- 动态sql-if

mybatis 批量插入 怎么获取刚刚插入的数据的id集合

Mybatis学习第3节 -- 排序

Mybatis学习第4节 -- 多参数传递