SpringBoot中如何使用JDBC

测试数据源

1、新建SpringBoot项目,引入web模块,JDBC模块以及MySQL驱动。

SpringBoot中如何使用JDBC_第1张图片

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进行增删改查

JdbcTemplate是Spring对JDBC进行的轻量级封装,数据库的crud操作都被封装在其中。Springboot提供了数据源,也配置好了JdbcTemplate,我们直接注入使用即可。

JdbcTemplate 的自动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类

JdbcTemplate主要提供以下几类方法:

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

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!";
       }
   
   }

访问对应路径,查看显示的信息。

你可能感兴趣的:(SpringBoot,java,spring,boot,jdbc)