Springboot整合JDBC

SpringData介绍

对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理

Spring Data官网:https://spring.io/projects/spring-data

有关数据库相关的启动器:可以参考官方文档:https://docs.spring.io/spring-boot/docs/2.4.3/reference/htmlsingle/#using-boot-starter

  1. 必要的两个依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
  1. 编写yaml配置文件连接数据库
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_zr?serverTimezone=PRC
    driver-class-name: com.mysql.cj.jdbc.Driver
    password: root
    username: root
  1. 可以去测试类测试一下是否能连接成功
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    DataSource dataSource;


    @Test
    void contextLoads() throws SQLException {

        //看一下默认数据源
        System.out.println(dataSource.getClass());
        //获得连接
        Connection connection =   dataSource.getConnection();
        System.out.println(connection);
        //关闭连接
        connection.close();

    }

}
  1. 结果:springboot默认配置的数据源为class com.zaxxer.hikari.HikariDataSource

全局搜索一下,找到数据源的所有自动配置都在 :DataSourceAutoConfiguration文件

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@ConditionalOnMissingBean(type = "io.r2dbc.spi.ConnectionFactory")
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ DataSourcePoolMetadataProvidersConfiguration.class, DataSourceInitializationConfiguration.class })
public class DataSourceAutoConfiguration {

	@Configuration(proxyBeanMethods = false)
	@Conditional(EmbeddedDatabaseCondition.class)
	@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
	@Import(EmbeddedDataSourceConfiguration.class)
	protected static class EmbeddedDatabaseConfiguration {

	}

	@Configuration(proxyBeanMethods = false)
	@Conditional(PooledDataSourceCondition.class)
	@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
	//一共导入了六种数据源
	@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
			DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
			DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
	protected static class PooledDataSourceConfiguration {

	}

HikariDataSource 号称 Java WEB 当前速度最快的数据源,相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加优秀

可以使用 spring.datasource.type 在配置文件中指定自定义的数据源类型,值为要使用的连接池实现的全类限定名

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 类

@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(JdbcOperations.class)
class JdbcTemplateConfiguration {

//注入JdbcTemplate到springIOC容器中
	@Bean
	@Primary
	JdbcTemplate jdbcTemplate(DataSource dataSource, JdbcProperties properties) {
		JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
		JdbcProperties.Template template = properties.getTemplate();
		jdbcTemplate.setFetchSize(template.getFetchSize());
		jdbcTemplate.setMaxRows(template.getMaxRows());
		if (template.getQueryTimeout() != null) {
			jdbcTemplate.setQueryTimeout((int) template.getQueryTimeout().getSeconds());
		}
		return jdbcTemplate;
	}

}

JdbcTemplate主要提供以下几类方法

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

测试:dao层方法编写

@Repository
public class UserDao {
    //注入JdbcTemplate模板进行增删改查操作
    //JdbcTemplate底层已经实现了自动注入数据源以及获取连接、释放连接,不用我们手动执行,非常方便
    @Autowired
    JdbcTemplate jdbcTemplate;
    //查询user所有数据
    public List<Map<String, Object>> queryUsers(String sql) throws SQLException {
        List<Map<String, Object>> users = jdbcTemplate.queryForList(sql);
        return users;
    }

    //更新一条数据
    public int update(String sql){
        int update = jdbcTemplate.update(sql,new Object[]{"chenhui","222222",1,new Date(),15});
        return update;
    }

    //添加一条数据
    public int add(String sql){
        int add = jdbcTemplate.update(sql,new Object[]{"hui","888888",0,new Date()});
        return add;
    }

    //删除一条数据
    public int delete(String sql,int id){
        int delete = jdbcTemplate.update(sql,id);
        return delete;
    }
}

测试类:

@SpringBootTest
class DemoApplicationTests {

    //注入daoUserDao对象进行增删改查操作
    @Autowired
    UserDao userDao;

    @Test
    void contextLoads() throws SQLException {
        //测试查询所有数据
        List<Map<String, Object>> users = userDao.queryUsers("select * from t_user");
        System.out.println(users);

        //测试更新一条数据
        int update = userDao.update("update t_user set username=?,password=?,gender=?,regist_time=? where id=?");
        System.out.println("更新了"+update+"数据");

        //测试添加一条数据
        int add = userDao.add("insert into t_user (username,password,gender,regist_time) values(?,?,?,?)");
        System.out.println("添加了"+add+"数据");

        //测试删除一条数据
        int delete = userDao.delete("delete from t_user where id=?", 40);
        System.out.println("删除了"+delete+"条数据");
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot整合MyBatis-Plus非常简单,可以按照以下步骤进行操作: 1. 添加MyBatis-Plus和相关依赖:在`pom.xml`文件中添加以下依赖: ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- MyBatis-Plus Starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> ``` 自行替换`最新版本号`为MyBatis-Plus的最新版本号。 2. 配置数据源信息:在`application.properties`(或`application.yml`)文件中配置数据库连接信息,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 创建实体类和Mapper接口:创建与数据库表对应的实体类,使用`@TableName`注解指定表名,然后创建对应的Mapper接口,继承自`BaseMapper`。 ```java @TableName("user") // 指定对应的表名 public class User { private Long id; private String name; // getter和setter方法省略... } public interface UserMapper extends BaseMapper<User> { } ``` 4. 编写业务逻辑:可以创建Service层来封装业务逻辑,使用`@Service`注解标记为Spring的Bean。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.selectById(id); } // 其他业务方法... } ``` 5. 使用MyBatis-Plus提供的API:MyBatis-Plus提供了丰富的API,可以方便地操作数据库,例如查询、插入、更新和删除等操作。 ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users/{id}") public User getUser(@Pa

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值