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

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

1.引入mysql-connector-java包

 
            mysql
            mysql-connector-java
            5.1.45
 

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




    
    
    
    
        
        
        
        
        
        
    
    
    
        
    
    
    
        
    

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. 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java)