Files
redkale/docs/data-source.md
redkale fe6a5dd91c doc
2023-12-29 23:19:10 +08:00

2.8 KiB
Raw Blame History

DB数据源

配置数据源

redkale.datasource.platf.url = jdbc:mysql://127.0.0.1:3306/platf?serverTimezone=UTC&characterEncoding=utf8
redkale.datasource.platf.user = root
redkale.datasource.platf.password = pwd123

增删改

@Data
public class Account {
    //男
    public static final short GENDER_MALE = 1;

    //女
    public static final short GENDER_FEMALE = 2;
    
    @Id
    @Column(name = "account_id")
    private String accountid;

    @Column(name = "account_name")
    private String accountName;

    private int age;
    
    private short gender;

    private String remark;

    @Column(name = "create_time", updatable = false)
    private long createTime;
}

  新增实体对象:

    //新增单个
    Account account = new Account();
    account.setAccountid("account1");
    account.setAccountName("Hello");
    account.setCreateTime(System.currentTimeMillis());
    source.insert(account);

    //异步新增多个
    Account a1 = new Account();
    a1.setAccountid("account1");
    a1.setAccountName("Hello1");
    a1.setCreateTime(System.currentTimeMillis());
    Account a2 = new Account();
    a2.setAccountid("account2");
    a2.setAccountName("Hello2");
    a2.setCreateTime(System.currentTimeMillis());
    source.insertAsync(a1, a2);

  修改实体对象:

    //更新单个字段
    source.updateColumn(Account.class, "account1", Account::getRemark, "新备注");

    //更新多个字段
    source.updateColumn(Account.class, "account1",
        ColumnValue.set(Account::getAccountName, "新名称"),
        ColumnValue.set(Account::getRemark, "新备注"),
        ColumnValue.inc(Account::getAge, 2)); //年龄+2

    //更新多个字段
    Account account = new Account();
    account.setAccountid("account1");
    account.setAccountName("新名称");
    account.setRemark("新备注");
    source.updateColumn(account, "accountName", "remark");
    //或者
    source.updateColumn(account, Account::getAccountName, Account::getRemark);

    //更新整个对象
    Account one = new Account();
    one.setAccountid("account1");
    one.setAccountName("Hello1");
    one.setCreateTime(System.currentTimeMillis());
    source.update(one); //createTime不会被更新因字段设置了@Column(updatable=false)

    //过滤更新
    source.updateColumn(Account.class, FilterNodes.lt(Account::getAge, 16),
        ColumnValue.set(Account::getRemark, "不满16岁是青少年"));

  删除实体:

    //根据主键值删除
    Account account = new Account();
    account.setAccountid("account1");
    source.delete(account);

    //过滤删除, 删除16以下男生
    source.delete(Account.class, FilterNodes.lt(Account::getAge, 16).and("gender", GENDER_MALE));