Data
对于Spring来说,就是提取bean
Spring Data官网
数据库相关的启动器
JDBC项目案例
- 创建项目选择web,jdbc,mysql
- 配置yaml
spring:
datasource:
username: root
password: 1234
# jdbc:mysql和https类似
# serverTimezone=UTC解决时区的报错
# useUnicode=true乱码问题
# characterEncoding=utf-8编码问题
url: jdbc:mysql://localhost:3306/springboot? serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
# com.mysql.cj.jdbc.Driver是mysql-connector-java 6 中的特性,相比mysql-connector-java 5 多了一个时区:serverTimezone
- Driver(com.mysql.jdbc.Driver)【代:D1】和Driver(com.mysql.cj.jdbc.Driver)【代:D2】的区别
- D1是MySQL5.0以上;D2是MySQL8.0以上的
- springboot自动装配
- 配置好后,会自动生成一些对象
- springboot用的数据源
class com.zaxxer.hikari.HikariDataSource
- 比c3p0快很多(DBCP,tomcat等)
- 配置到yaml中就可以换自己想用的类型
- 默认hikari,后面我们改为德鲁伊Druid连接池
- 如果要用就自动配置JdbcTemplate,如果要自动配置数据源就DataSource
- 测试类配置数据源,获取数据库连接
- 使用JDBC直接操作数据库(后面我们会用Mybatis)—这里做JDBC项目案例
- 创建一个Controller的类JDBCController
//用了这个注解,就会返回字符串了
@RestController
public class JDBCController {
@Autowired
JdbcTemplate jdbcTemplate;
//查询数据库的所有信息
//没有实体类,数据库中的东西,怎么获取?
@GetMapping("/userList")
public List<Map<String, Object>> userList(){
//原生的jdbc需要写sql,不像mybatis
String sql = "select * from employee";
List<Map<String, Object>> list_maps = jdbcTemplate.queryForList(sql);
return list_maps;
}
//因为jdbc直接操作数据库,所以不需要传值
@GetMapping("addUser")
public String addUser(){
String sql = "insert into springboot.employee(id, last_name, email, gender, department, birth) values (1006, '葛晓伟', '24736753@qq.com', 1, 106, '2020-03-06 15:04:33')";
jdbcTemplate.update(sql);
return "update-ok";
}
//因为jdbc直接操作数据库,所以不需要传值
@GetMapping("updateUser/{id}")
public String updateUser(@PathVariable("id") int id){
//?预编译sql需要将下面封装的值传进去(为了防止sql注入),但是后面的+id就不建议,这里是测试
String sql = "update springboot.employee set last_name=?,gender=? where id=" + id;
//封装
Object[] objects = new Object[2];
objects[0] = "葛一林";
objects[1] = 0;
jdbcTemplate.update(sql, objects);
return "update-ok";
}
//因为jdbc直接操作数据库,所以不需要传值
@GetMapping("deleteUser/{id}")
public String deleteUser(@PathVariable("id") int id){
String sql = "delete from springboot.employee where id=?";
//直接能写id,是因为integer(int的自动装箱)也属于Object
jdbcTemplate.update(sql, id);
return "update-ok";
}
}