Skip to content

新增(save)

Mapper 内置方法

  • save(T):实体类保存
  • save(Model):Model类保存
  • saveOrUpdate(T):实体类保存或修改
  • save(List<T>):多个实体类保存(非批量操作)
  • saveBatch(List<T>):多个实体类保存(批量操作)
  • saveBatch(List<T>,saveFields):多个实体类,指定列保存(批量操作)

基于实体类

java
public class Demo {
    @Autowired
    private SysUserMapper sysUserMapper;
    
    public void save() {
        SysUser sysUser = new SysUser();
        sysUser.setUserName("demo");
        sysUserMapper.save(sysUser);
    }
}

基于Model类

Model类为了save时,不用处理太多的字段,只保存部分字段;同时也简单类的转换,方便快捷

Model类

java
@Data
public class SysUserModel implements Model<SysUser> {

    private Integer id;

    private String userName;
   
    
    //private String password;

    //private Integer roleId;

    private LocalDateTime createTime;
}

基于Model类 save

java
public class Demo {
    @Autowired
    private SysUserMapper sysUserMapper;
    
    public void save() {
        SysUserModel sysUser = new SysUserModel();
        sysUser.setUserName("demo");
        sysUserMapper.save(sysUser);
    }
}

批量save

java
public class Demo {
    @Autowired
    private SysUserMapper sysUserMapper;
    
    public void saveBatch() {
        List<SysUser> sysUserList = new ArrayList<>();
        //sysUserList.add() ...
        sysUserMapper.saveBatch(sysUser);
    }
}

动态save

insert into select

java
public class Demo {
    @Autowired
    private SysUserMapper sysUserMapper;
    
    public void saveBatch() {
        InsertChain.of(sysUserMapper)
                .insert(SysUser.class)
                .field(SysUser::getUserName, SysUser::getRoleId)
                .fromSelect(Query.create()
                        .select(SysUser2::getUserName, SysUser2::getRoleId)
                        .from(SysUser2.class)
                )
                .execute();
    }
}

java
public class Demo {
    @Autowired
    private SysUserMapper sysUserMapper;
    
    public void saveBatch() {
        InsertChain.of(mapper)
                .insert(SysUser.class)
                .insertSelect(SysUser::getId, Methods.value(100))
                .insertSelect(SysUser::getValue1, GetterFields.of(SysUser2::getValue1, SysUser2::getValue1), cs -> cs[0].concat(cs[1]))
                .insertSelect(SysUser::getValue2, SysUser2::getValue2)
                .insertSelect(SysUser::getValue3, SysUser2::getValue3)
                .insertSelect(SysUser::getCreateTime, SysUser2::getCreateTime)
                .insertSelectQuery(query -> query.from(SysUser2.class).eq(SysUser2::getId, 1))
                .execute();
    }
}

insert into values

java
public class Demo {
    @Autowired
    private SysUserMapper sysUserMapper;
    
    public void saveBatch() {
        InsertChain.of(sysUserMapper)
                .insert(SysUser.class)
                .field(SysUser::getUserName, SysUser::getPassword)
                .values(Arrays.asList("admin","123"))
                .values(Arrays.asList("test","1234"))
                .execute();
    }
}