前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis插入时获取自增主键

mybatis插入时获取自增主键

作者头像
河岸飞流
发布2021-01-06 11:34:51
9960
发布2021-01-06 11:34:51
举报
文章被收录于专栏:开发杂记
一、自增主键优缺点

1.优点

  • 查询和插入的性能较高(增量增长,按序存放,具体可查看InnoDB相关资料了解B+树)
  • 插入新记录时不用担心主键会重复

2.缺点

  • 分布式系统中不太适用
二、回到正文

1.核心jar包

代码语言:javascript
复制
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>
    
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper</artifactId>
        <version>3.3.9</version>
    </dependency>

2.配置mybatis扫描路径

代码语言:javascript
复制
@SpringBootApplication
@MapperScan(basePackages = {"com.xsh.springdemo"})
public class SpringdemoApplication {
public static void main(String[] args) {
    SpringApplication.run(SpringdemoApplication.class, args);
}

3.编写mapper文件 这里我没有使用xml形式,直接才用注解形式更方便简洁

代码语言:javascript
复制
public interface UserMapper extends Mapper<UserModel> {
    @Insert("insert into test_user (name, address)value(#{user.name},#{user.address})")
    @Options(useGeneratedKeys = true, keyProperty = "user.id", keyColumn = "id")
    int addUser(@Param("user") UserModel user);
}

其中UserModel内容

代码语言:javascript
复制
@Data
public class UserModel implements Serializable {

    private Integer id;
    private String name;
    private String address;

    public UserModel(String name, String address) {
        this.name=name;
        this.address=address;
    }
}

test_user表DDL

代码语言:javascript
复制
CREATE TABLE `test_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

4.编写单元测试用例

代码语言:javascript
复制
 @Autowired
private UserMapper userMapper;
@Test
public void testAdd(){
    UserModel userModel = new UserModel("测试姓名","测试地址");
    userMapper.addUser(userModel);
    System.out.println("主键为:"+userModel.getId());
}
代码语言:javascript
复制
调用实体的`getId`方法即可获取都记录的id值。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、自增主键优缺点
  • 二、回到正文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档