一、单表操作

查询数据

// 根据主键查询,可以这样构建sql
String sql = SqlBuilder.select("表名").byPrimaryKey("主键名").builder();

// 自定义查询条件,可以这样构建
String sql = SqlBuilder.select("表名").where("表字段名 = #{参数字段名}").builder();

// 自定义查询字段,可以这样构建(column传入的类里面的属性就是要查询的字段)
String sql = SqlBuilder.select("表名").column(DemoDTO.class).where("表字段名 = #{参数字段名}").builder();

DemoDTO param = new DemoDTO();
param.setId(102);

DemoDTO demoDTO = JdbcTemplate.create().selectOne(sql, param, DemoDTO.class);
  • column里面的实体类,如果想排除某个字段 可以在要排除的字段上加上JsonIgnore注解
  • sql构造器,delete,update,select 均可选择byPrimaryKey与where之一
  • 以上两条,下面的单表操作相同

修改数据

// 构建sql(column传入的类里面的属性就是要修改的字段)
String sql = SqlBuilder.update("表名").column(DemoDTO.class).where("表字段名 = #{参数字段名}").builder();

DemoDTO param = new DemoDTO();
param.setCreateTime(new Date());
param.setName("testName");
param.setId(105);

JdbcTemplate.create().update(sql, param);

插入数据

// 构建sql(column传入的类里面的属性就是要插入的字段)
String sql = SqlBuilder.insert("表名").column(DemoDTO.class).builder();

DemoDTO param = new DemoDTO();
param.setCreateTime(new Date());
param.setName("testName");

JdbcTemplate.create().update(sql, param);

删除数据

String sql = SqlBuilder.delete("表名").where("表字段名 = #{参数字段名}").builder();

DemoDTO param = new DemoDTO();
param.setId(107);
JdbcTemplate.create().update(sql, param);

二、多表查询

  • 这种情况需要使用JdbcTemplete:
  • 在代码里去拼sql,sql拼好以后用下面所示的方式执行
  • sql中的参数可以用用#{}或者${}或者? 来占位
JdbcTemplate.create("数据源名称,不传自动使用默认数据源").selectList(sql,返回实体类型.class);
JdbcTemplate.create("数据源名称,不传自动使用默认数据源").update(sql,实体对象参数);
  • JdbcTemplate 这里就不多说了,实际使用的时候,开发环境的自动补全功能会自动弹出里面的方法,选择适合自己的就行了

三、分页查询

使用JdbcTemplate里的selectPageList

public PageModel<要返回的实体类> findPage(PageParamModel pageParamModel) throws Exception {
    String sql = "select * from userinfo where name like #{name}";
    return JdbcTemplate.create("数据源名称,不传自动使用默认数据源").selectPageList(sql,pageParamModel,DemoEntity.class);
}

参数必须传PageParamModel,返回类型也必须是PageModel

四、占位符解释

#{name}: 这种占位符会被替换成 ? 没有sql注入的风险
${name}: 这种占位符是字符串拼接,有sql注入的风险

这两个可以混用

--------------------------

? : 这是jdbc原生占位符,这个不可以混用,如果要用就必须全都用问号,传参也必须传new Oject[]{参数1,参数2,参数3}

results matching ""

    No results matching ""