java使用jdbc操作数据库(maven)

一.直接用原生的mysql-connector包操作

1.引入mysql-connector-java包

 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
 </dependency>

2.创建Properties文件,配置数据库连接信息

在source目录下创建jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT
username=root
password=123456
initialPoolSize = 3
maxPoolSize = 6

3.创建获取properties文件键值对工具PropertiesUtil

package com.itcast.jdbc;

import java.io.IOException;
import java.util.Properties;

/**
 * 获取properties文件的工具
 */
public class PropertiesUtil {
    static Properties properties = new Properties();

    public static boolean loadFile(String fileName){
        try {
            //传入一个输入流
            properties.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName));
        }catch (IOException e) {
            return false;
        }
        return true;
    }

    public static String getPropertyValue(String key){
       String value = properties.getProperty(key);
       return value;
    }
}

4.创建jdbc工具类JdbcUtil

package com.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcUtil {
    private static Connection conn = null;

    public static Connection getConn(){
        PropertiesUtil.loadFile("jdbc.properties");
        String driver = PropertiesUtil.getPropertyValue("driver");
        String url = PropertiesUtil.getPropertyValue("url");
        String username = PropertiesUtil.getPropertyValue("username");
        String password = PropertiesUtil.getPropertyValue("password");

        try{
            //获取连接对象Connection
            Class.forName(driver);
            conn = DriverManager.getConnection(url,username,password);
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }catch (SQLException e){
            e.printStackTrace();
            close();
        }
        return conn;
    }

    public static void close(){
        try{
            conn.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

}

5.客户端使用,就直接用JdbcUtil工具类就行了 通过操作连接对象操作数据库;

二.spring的JdbcTemplate操作数据库

1.jdbcTemplate是spring封装好的操作数据库的工具,也是用java的jdbc接口,需要依赖连接池数据源(dataSource),jdbcTemplate支持c3po,DBCP两种连接池工具,JdbcTemplate有update()方法执行增删该sql语句,query()执行查询sql

2.1创建UserDao文件,依赖JdbcTemplate,把数据操作封装起来

package com.itcast.dao;

import org.springframework.jdbc.core.JdbcTemplate;

public class UserDao {
    //依赖JdbcTemplate
    private JdbcTemplate jdbcTemplate;

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public int add(){
        String sql = "insert into user (`name`,`age`) values(?,?)";
        int count = this.jdbcTemplate.update(sql,"战三",55);
        return count;
    }


}

2.2配置xml,数据源->JdbcTemplate->UserDao

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--读取properties配置-->
    <context:property-placeholder location="jdbc.properties"/>
    <!--配置数据源 c3p0-->
    <bean id="comboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${username}"></property>
        <property name="password" value="${password}"></property>
        <property name="jdbcUrl" value="${url}"></property>
        <property name="driverClass" value="${driver}"></property>
        <property name="initialPoolSize" value="${initialPoolSize}"></property>
        <property name="maxPoolSize" value="${maxPoolSize}"></property>
    </bean>
    <!--配置jdbcTemplate 注入dataSource数据源-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="comboPooledDataSource"></property>
    </bean>
    <!--配置Dao,注入jdbcTemplate-->
    <bean id="UserDao" name="userDao" class="com.itcast.dao.UserDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>
</beans>

2.3 从容器中获取UserDao,执行add方法即可插入一条数据

 public void run(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        UserDao userDao = (UserDao) context.getBean("userDao", UserDao.class);
        Integer count = userDao.add();
        System.out.println(count);
    }

三.JDBC原生方式进行事务处理 ,使用Connection对象来提交事务

@Test
    public void jdbc(){
        Connection conn = JdbcUtil.getConn();

        try{
            Statement stat = conn.createStatement();
            conn.setAutoCommit(false); //不自动提交
            String sql_update = " insert into user (name,age) values(\"张三\",100) ";
            stat.executeUpdate(sql_update);
            stat.executeUpdate(sql_update);
            conn.commit(); //提交
        }catch (Exception e){
            e.printStackTrace();
            conn.rollback();
        }

    }

四.spring框架对事务支持

1.引入包  spring-tx, 这个包定义了一些接口,Spring事务管理器的接口是org.springframework.transaction. PlatformTransactionManager,通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器。

2.spring中即提供了编程式事务的管理方式,也提供了声明式事务的管理方式:

编程式事务 TransactionTemplate

模板类 将事务的管理过程封装模板类中,实际开发很少使用】 

声明式事务 AOP
提供根接口 PlatFormTransactionManager 事务管理器接口 
用于描述spring中事务如何管理[如何创建、如何提交、如何回滚] 】

  • 声明式事务 

底层采用AOP技术实现,将事务管理过程(创建、提交、回滚)封装在一个事务通知bean[AfterAdvice ThrowsAdvice]中; 
通过在ioc容器中配置切入点的方式,将这个事务通知bean提供的事务管理功能引用给需要事务的核心业务逻辑方法(DAO)

3. 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Java中的JDBC连接数据库,首先需要准备好相关的工具和配置。可以参考以下步骤: 1. 引用所提供的第一份文献介绍了使用JDBC连接数据库的工具类和示例代码,可以作为参考。 2. 需要在项目中添加MySQL的JDBC驱动程序依赖。可以使用Maven等构建工具,在项目的pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> ``` 3. 注册MySQL的JDBC驱动程序。可以使用以下代码中的任意一种方式注册驱动程序: ```java Class.forName("com.mysql.jdbc.Driver"); ``` 或者 ```java System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver"); ``` 4. 连接到MySQL数据库。需要提供数据库的URL、用户名和密码。可以使用以下代码创建数据库连接: ```java private static final String DB_URL = "jdbc:mysql://localhost:3306/test"; private static final String USER = "root"; private static final String PASS = "123456"; private Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); ``` 注意,以上代码中的DB_URL、USER和PASS需要根据实际情况进行修改。 5. 现在可以通过创建Statement或PreparedStatement对象来执行SQL语句并与数据库进行交互。 这些步骤可以帮助您使用Java中的JDBC连接到MySQL数据库。希望对您有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java使用jdbc连接数据库工具类和jdbc连接mysql数据示例](https://download.csdn.net/download/weixin_38502929/12810866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java使用JDBC连接数据库](https://blog.csdn.net/qq_27870421/article/details/87958738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java-JDBC连接数据库](https://blog.csdn.net/rbx508780/article/details/127285877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

runtoweb3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值