SpringBoot整合JDBC
整合JDBC1、添加依赖或者在创建项目时候添加启动器的地方点勾选Sql-JDBC API<!--jdbc启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>&l
整合JDBC
1、添加依赖
或者在创建项目时候添加启动器的地方点勾选Sql-JDBC API
<!--jdbc启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql连接启动器-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2、直接在yaml.properties输入datasource相关配置
spring:
datasource:
username: root
password: root
#?serverTimezone=GMT%2B8 解决时区的报错:GMT世界时区+8=中国时间
url: jdbc:mysql://localhost:3306/db3?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
3、可以测试:
@SpringBootTest
class SpringbootDataJdbcApplicationTests {
//DI注入数据源
@Autowired
DataSource dataSource;
@Test
public void contextLoads() throws SQLException {
//看一下默认数据源
System.out.println(dataSource.getClass());
//获得连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
//关闭连接
connection.close();
}
}
结果:可以看出来默认数据源是:class com.zaxxer.hikari.HikariDataSource
HikariDataSource 号称 Java WEB 当前速度最快的数据源,相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加优秀;
4、JDBCTemplate
-
1、有了数据源(com.zaxxer.hikari.HikariDataSource),然后可以拿到数据库连接(java.sql.Connection),有了连接,就可以使用原生的 JDBC 语句来操作数据库;
-
2、即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC 做了轻量级的封装,即JdbcTemplate。
-
3、数据库操作的所有 CRUD 方法都在 JdbcTemplate 中。
-
4、Spring Boot 不仅提供了默认的数据源,同时默认已经配置好了 JdbcTemplate 放在了容器中,程序员只需自己注入即可使用
-
5、JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类
JdbcTemplate主要提供以下几类方法:
-
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
-
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
-
query方法及queryForXXX方法:用于执行查询相关语句;
-
call方法:用于执行存储过程、函数相关语句。
pojo类:lombok插件
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Blog {
private String id; //编号
private String title; //标题
private String author; //作者
private Date create_time; //创建时间
private int views; //浏览量
}
Dao层的实现类
//当存在 多个BlogDao实现类时候,@Repository命名
@Repository("BlogDaoImp")
public class BlogDaoImp implements BlogDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<Blog> query() {
String sql = "select * from blog";
//封装到类中
List<Blog> blogs = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Blog.class));
System.out.println("BlogDaoImp类的遍历全部blog");
return blogs;
}
}
Service层的实现类
@Service
public class BlogServiceImp implements BlogService {
@Autowired
@Qualifier("BlogDaoImp")
private BlogDao blogDao;
@Override
public List<Blog> query() {
return blogDao.query();
}
}
Controller实现展示全部
@Controller
public class ListController {
//自动装配
@Autowired
private BlogService blogService;
//请求访问全部blog
@RequestMapping("/list")
public String list(Model model){
List<Blog> blogs = blogService.query();
model.addAttribute("blogs",blogs);
return "list";
}
}
前端list.html
使用thymeleaf的th:each接受到blogs集合并依次遍历
更多推荐
所有评论(0)