单表操作
根据主键查询一条数据
调用getOneByPrimaryKey方法
// 从test表查询主键=102的数据
DemoDTO demoDTO = JdbcTemplate.create("数据源名称,不传自动使用默认数据源").getOneByPrimaryKey("test","id", 102, DemoDTO.class);
- 第一个参数:要从哪张表里的查询
- 第二个参数:主键字段名
- 第三个参数:要查主键是什么的数据就传什么
- 第四个参数:返回数据的类型,不传这个参数的话默认返回Map
根据主键更新数据
调用updateByPrimaryKey方法
// 修改主键=100的数据的 name为testName,createTime为当前时间
DemoDTO demo2 = new DemoDTO();
demo2.setCreateTime(new Date());
demo2.setName("testName");
demo2.setId(103);
JdbcTemplate.create("数据源名称,不传自动使用默认数据源").updateByPrimaryKey("test","id", demo2);
- 第一个参数:要从哪张表里的查询
- 第二个参数:主键字段名
- 第三个参数:任意自定义实体对象或者map
插入一条数据
调用insert方法
// 将DEO保存到数据库
DemoDTO demo = new DemoDTO();
demo.setCreateTime(new Date());
demo.setName("testName");
JdbcTemplate.create("数据源名称,不传自动使用默认数据源").insert("test", demo);
- 第一个参数:要插入哪张表
- 第二个参数:任意自定义实体对象或者map
根据主键删除一条数据
调用deleteByPrimaryKey方法
// 删除主键=104的数据
JdbcTemplate.create("数据源名称,不传自动使用默认数据源").deleteByPrimaryKey("test","id", 104);
- 第一个参数:要从哪张表里删除
- 第二个参数:主键字段名
- 第三个参数:要删除主键是什么值的数据就传什么
多表查询
- 这种情况需要使用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}