1.由于springboot的特性,第一只需要导入了jdbc的驱动(创建时springbot项目时初始时勾选就OK),第二需要数据源的配置像下面这样,用的是yaml的配置形式,
spring:
datasource:
username: "root"
password: "123456"
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
url中都是jdbc:mysql://localhost:3306(mysql默认的)/数据名称?一些参数,例如时区,编码,SSL的设置。
那个mybatis是数据库的一个名字,连接的是mysql中的mybatis数据库
便会自动产生对象datasource,通过自动配置datasource对象获得数据库连接,拿到数据库连接就可以用JDBC对数据库进行操作了。
SpringBoot中默认的数据源是class com.zaxxer.hikari.HikariDataSource
@SpringBootTest
class Springboot04DataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//查看一下默认的数据源: class com.zaxxer.hikari.HikariDataSource
System.out.println(dataSource.getClass());
//拿到数据库连接就可以用jdbc对数据库进行操作了
Connection connection = dataSource.getConnection();
System.out.println(connection);
//关闭
connection.close();
}
}
2. 遇见 XXXX Template:SpringBoot已经配置好模板bean,拿来即用
例如JDBCTemplate,RedisTemplate
完成上面操作后SpringBoot会注册了JdbcTemplate的Bean,只需要数据源(SpringBoot默认提供了)与Jdbc的配置文件(yaml形式,上面已经配置),所以可以直接拿来用
3.编写Controller层测试
首先自动注入JdbcTemplate对象
因为懒得编写实体类,所以若想获取数据库里的内容,就要用万能的Map
@RestController
public class JDBCController {
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/userList")
//查询数据库的所有信息
public List<Map<String, Object>> userList(){
String sql = "select * from mybatis.user";
//调用JdbcTemplate中封装好的方法,只需要传sql语句
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
}
回顾一下拼接sql语句 与占位符 (有sql注入攻击警告,只是例子,最好不要用拼接)
@GetMapping("/updateUser/{id}")
public String updateUser(@PathVariable int id){
String sql = "update mybatis.user set name=?,pwd=? where id=" + id;
Object[] object = new Object[2];
object[0] = "小明2";
object[1] = "zzzzzz";
jdbcTemplate.update(sql,object);
return "update-ok";
}
在jdbc中增删改全用update方法去实现。查询是query
最好还是用占位符
@GetMapping("/deleteUser/{id}")
public String deleteUserByid(@PathVariable int id){
String sql = "delete from mybatis.user where id = ?";
jdbcTemplate.update(sql,id);
return "deleteUser-ok";
}
JdbcTemplate提供的update方法中,后面的id参数表示的是占位符的值
这样全在Controller层高耦合,所以只是为了复习一下SpringBoot如何整合Jdbc