整合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集合并依次遍历
在这里插入图片描述
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐