CURD扩展
插入
Insert
@Test//测试插入
public void insertTest(){
User user = new User();
user.setName("张三");
user.setAge(18);
user.setEmail("2545644870@qq.com");
Integer result = userMapper.insert(user); //会帮我们自动生成id
System.out.println(result); //受影响的行数
System.out.println(user); //通过日志发现id会自动回填
}
数据库插入的id的默认值为:全局的唯—id
主键生成策略
*默认 : ID_WORKER 全局唯一Id*
分布式系统唯一Id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html
- Twitter的snowflake算法
- 雪花算法
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心(北京、香港···),5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全局唯一!
主键自增:AUTO 我们需要配置主键自增
我们需要配置主键自增
- 在实体类字段上配置
@TableId(type = IdType.AUTO) - 数据库字段勾选上自增
再次测试插入
@Test//测试插入
public void insertTest(){
User user = new User();
user.setName("张三2");
user.setAge(18);
user.setEmail("2545644870@qq.com");
Integer result = userMapper.insert(user); //会帮我们自动生成id
System.out.println(result); //受影响的行数
System.out.println(user); //通过日志发现id会自动回填
}
发现id自增一了
源码解释
public enum IdType {
AUTO, //数据库id自增
INPUT, //手动输入
ID_WORKER, //默认的全局唯一id
UUID, //全局唯一id uuid
NONE;//未设置主键
**
}
*手动输入:INPUT* 就需要自己写id
- 在实体类字段上配置
@TableId(type = IdType.INPUT) - 测试
更新操作
@Test//测试更新
public void updateTest(){
User user = new User();
user.setId(2L);//怎么改id??
//通过条件自动拼接动态Sql
user.setName("root");
user.setAge(12);
user.setEmail("root@qq.com");
int i = userMapper.updateById(user);//updateById,但是参数是个user
System.out.println(i);
}
1557

被折叠的 条评论
为什么被折叠?



