0
点赞
收藏
分享

微信扫一扫

09_11_第七阶段:微服务开发||01-SpringBoot||10整合JDBC使用(了解即可)【观看狂神随笔】


Data

对于Spring来说,就是提取bean

​​Spring Data官网​​

​​数据库相关的启动器​​

JDBC项目案例

  1. 创建项目选择web,jdbc,mysql
  2. 配置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以上的
  1. springboot自动装配
  1. 配置好后,会自动生成一些对象
  2. springboot用的数据源​​class com.zaxxer.hikari.HikariDataSource​
  • 比c3p0快很多(DBCP,tomcat等)
  • 配置到yaml中就可以换自己想用的类型
  • 默认hikari,后面我们改为德鲁伊Druid连接池
  1. 如果要用就自动配置JdbcTemplate,如果要自动配置数据源就DataSource
  1. 测试类配置数据源,获取数据库连接
  2. 使用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";
}
}


举报

相关推荐

0 条评论