1、新建SpringBoot项目,引入web模块,JDBC模块以及MySQL驱动。
2、编写配置文件连接数据库
spring:
datasource:
username: root
//密码需要加上引号,否则报错
password: '1111'
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
//MySQL5.7以上的版本使用com.mysql.cj.jdbc.Driver
/MySQL5.7以下的版本使用com.mysql.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
3、配置完毕后测试一下:
@SpringBootTest
class DataApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
//class com.zaxxer.hikari.HikariDataSource
System.out.println(dataSource.getClass());
//HikariProxyConnection@13001549 wrapping com.mysql.cj.jdbc.ConnectionImpl@65f58c6e
//获取连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
//关闭连接
connection.close();
}
}
我们可以看到Springboot默认配置的数据源是com.zaxxer.hikari.HikariDataSource
数据源的自动配置都在DataSourceAutoConfiguration中:
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Generic.class,
DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration {
}
static class PooledDataSourceCondition extends AnyNestedCondition {
@ConditionalOnProperty(prefix = "spring.datasource", name = "type")
static class ExplicitType {
}
}
我们可以使用spring.datasource.type指定数据源类型,但必须是全限定类名。接下来我们就可以进行crud操作了,但是需要一个模板对象JdbcTemplate。
JdbcTemplate是Spring对JDBC进行的轻量级封装,数据库的crud操作都被封装在其中。Springboot提供了数据源,也配置好了JdbcTemplate,我们直接注入使用即可。
JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类
JdbcTemplate主要提供以下几类方法:
JdbcTemplate让我们可以非常方便地使用jdbc,现在写个Controller来测试测试:
@RestController
@RequestMapping("/jdbc")
public class JdbcController {
@Autowired
JdbcTemplate jdbcTemplate;
//查询所有
@RequestMapping("/queryAll")
public List<Map<String,Object>> queryAll(){
String sql = "select * from t_user";
List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql);
return mapList;
}
//添加
@RequestMapping("/add")
public String add(){
String sql = "insert into t_user(id,username,password,email) values(122,'xiaobai','123','[email protected]')";
jdbcTemplate.update(sql);
return "add ok!";
}
//更新
@RequestMapping("/update/{id}")
public String update(@PathVariable("id")Integer id){
String sql = "update t_user set username=?,password=?,email=? where id = " + id;
Object[] init = {"ergou","123","[email protected]"};
jdbcTemplate.update(sql, init);
return "update ok!";
}
//删除
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id")Integer id){
String sql = "delete from t_user where id=?";
jdbcTemplate.update(sql,id);
return "delete ok!";
}
}
访问对应路径,查看显示的信息。