单表操作

根据主键查询一条数据

调用getOneByPrimaryKey方法

  1. // 从test表查询主键=102的数据
  2. DemoDTO demoDTO = JdbcTemplate.create("数据源名称,不传自动使用默认数据源").getOneByPrimaryKey("test","id", 102, DemoDTO.class);
  • 第一个参数:要从哪张表里的查询
  • 第二个参数:主键字段名
  • 第三个参数:要查主键是什么的数据就传什么
  • 第四个参数:返回数据的类型,不传这个参数的话默认返回Map

根据主键更新数据

调用updateByPrimaryKey方法

  1. // 修改主键=100的数据的 name为testName,createTime为当前时间
  2. DemoDTO demo2 = new DemoDTO();
  3. demo2.setCreateTime(new Date());
  4. demo2.setName("testName");
  5. demo2.setId(103);
  6. JdbcTemplate.create("数据源名称,不传自动使用默认数据源").updateByPrimaryKey("test","id", demo2);
  • 第一个参数:要从哪张表里的查询
  • 第二个参数:主键字段名
  • 第三个参数:任意自定义实体对象或者map

插入一条数据

调用insert方法

  1. // 将DEO保存到数据库
  2. DemoDTO demo = new DemoDTO();
  3. demo.setCreateTime(new Date());
  4. demo.setName("testName");
  5. JdbcTemplate.create("数据源名称,不传自动使用默认数据源").insert("test", demo);
  • 第一个参数:要插入哪张表
  • 第二个参数:任意自定义实体对象或者map

根据主键删除一条数据

调用deleteByPrimaryKey方法

  1. // 删除主键=104的数据
  2. JdbcTemplate.create("数据源名称,不传自动使用默认数据源").deleteByPrimaryKey("test","id", 104);
  • 第一个参数:要从哪张表里删除
  • 第二个参数:主键字段名
  • 第三个参数:要删除主键是什么值的数据就传什么

多表查询

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

分页查询

使用JdbcTemplate里的selectPageList

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

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

占位符解释

  1. #{name}: 这种占位符会被替换成 ? 没有sql注入的风险
  2. ${name}: 这种占位符是字符串拼接,有sql注入的风险
  3. 这两个可以混用
  4. --------------------------
  5. ? : 这是jdbc原生占位符,这个不可以混用,如果要用就必须全都用问号,传参也必须传new Oject[]{参数1,参数2,参数3}