java JDBCUtils 使用静态代码块连接数据库 全程值保持一次连接

业务逻辑层

\src\com\data\service\UserService.java

\src\com\data\service\impl\UserServiceImpl.java

DAO接口层

\src\com\user\dao\UserDao.java
\src\com\user\dao\impl\Userimpl.java

\src\com\data\entity\JDBCUtils.java

使用静态代码块连接数据库  全程值保持一次连接

package com.data.entity;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

public class JDBCUtils {
//public static DataSource dataSource=null;
public static JdbcTemplate jdbcTemplate=null;
static {  //静态代码块
    //方法1
//    String url = "jdbc:mysql://localhost:3306/xx?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
//    String username = "root";
//    String password = "1234567";
//    DataSource dataSource = new DriverManagerDataSource(url,username,password);
//    jdbcTemplate = new JdbcTemplate(dataSource);

    //方法2
    Mysql_Template_conn conn=new Mysql_Template_conn(
            "localhost","root","123456","data","3306","UTF-8");
    conn.getConnection();  // 建立连接
    jdbcTemplate = new JdbcTemplate(conn.conn);

}

    public static JdbcTemplate newJdbcTemplate(){
        return jdbcTemplate;
    }

    public static JdbcTemplate newJdbcTemplate2(){
        return jdbcTemplate;
    }




}

\src\com\data\entity\Mysql_conn.java

package com.data.entity;

import java.sql.*;
/*
JDBC封装增删改查
*QQ 7650371
* */
public class Mysql_conn {
    private Connection con; // 声明Connection对象
    private Statement ps;  //PreparedStatement
    private ResultSet rs;
    public boolean link=false;  // static
    public String HOSTNAME=""; //服务器
    public String USERNAME=""; //数据库登录名
    public  String PASSWORD=""; //密码
    public String DATABASE=""; //数据库名
    public String HOSTPORT=""; //端口
    public String CHARSET=""; //编码

    public Mysql_conn(String HOSTNAME, String USERNAME, String PASSWORD, String DATABASE) {
        this.HOSTNAME = HOSTNAME;
        this.USERNAME = USERNAME;
        this.PASSWORD = PASSWORD;
        this.DATABASE = DATABASE;
    }

    public Mysql_conn(String HOSTNAME, String USERNAME, String PASSWORD, String DATABASE, String HOSTPORT) {
        this.HOSTNAME = HOSTNAME;
        this.USERNAME = USERNAME;
        this.PASSWORD = PASSWORD;
        this.DATABASE = DATABASE;
        this.HOSTPORT = HOSTPORT;
    }

    public Mysql_conn(String HOSTNAME, String USERNAME, String PASSWORD, String DATABASE, String HOSTPORT, String CHARSET) {
        this.HOSTNAME = HOSTNAME;
        this.USERNAME = USERNAME;
        this.PASSWORD = PASSWORD;
        this.DATABASE = DATABASE;
        this.HOSTPORT = HOSTPORT;
        this.CHARSET = CHARSET;
    }

    public Connection getConnection() { // 建立返回值为Connection的方法
//        HOSTNAME = "localhost";  //服务器
//        USERNAME = "root";//数据库登录名
//        PASSWORD = "218484";//密码
//        DATABASE = "data";//数据库名
        if(HOSTPORT==""){HOSTPORT = "3306";} //端口
        if(CHARSET==""){CHARSET = "UTF-8";} //编码

        try { // 加载数据库驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("数据库驱动加载成功");
            try { // 通过访问数据库的URL获取数据库连接对象
//                jdbc:mysql	协议
//                localhost:3306	localhost是本机地址127.0.0.1 , 3306 端口名,是mysql开启的服务,如果上述(配置一)的mysql服务未开启,会报 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 的异常
//                databaseName	数据库的名字,如果没有此数据库会报SQLSyntaxErrorException: Unknown database 'xxx',的异常
//                useSSL=false	在web领域要用到,指是否开启ssl安全连接,但MySQL 8.0 以上版本不需要建立 SSL 连接,需要关闭。
//                serverTimezone=UTC	设置时区
//                characterEncoding=UTF-8	设置编码格式,不设置很可能造成乱码。
                //"jdbc:mysql://localhost:3306/xx2304?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"
                String jdbc="jdbc:mysql://"+HOSTNAME+":"+HOSTPORT+"/"+DATABASE+"?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding="+CHARSET;
                this.con = DriverManager.getConnection(jdbc, USERNAME, PASSWORD);
                this.ps = this.con.createStatement();
                System.out.println("数据库连接成功");
                this.link=true;
            } catch (SQLException e) {
                e.printStackTrace();
                this.link=false;
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            this.link=false;
        }
        return con; // 按方法要求返回一个Connection对象
    }

    public  void close(){
        try {
            if(this.con != null) {this.con.close();}
        } catch (Exception e) {
            System.out.println(e.toString());
        }
        try {
            if(this.ps != null) {this.ps.close();}
        } catch (Exception e) {
            System.out.println(e.toString());
        }
        try {
            if(this.rs != null) {this.rs.close();}
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }

//    execute	可以增删改查
//    executeUpdate	可以增删改,但是不能查询
//    executeQuery	只可以查询
    public void executeQuery(String sql){  //只可以查询
        try {
            this.rs = this.ps.executeQuery("SELECT *FROM jobs");
            while(this.rs.next()) {
                String title=this.rs.getString("job_title");
                System.out.println("====="+title);

                //Integer XX=this.rs.getInt();
                // long xx=this.rs.getLong();
//                double xx=this.rs.getDouble();
//                String xx=this.rs.getString();
//                Date xx=this.rs.getDate();
            }
        //Statement statement = this.con.createStatement();
//        ResultSet resultSet = statement.executeQuery("SELECT *FROM jobs");
//        while(resultSet.next()){
//            System.out.println("====="+resultSet.getString("job_title"));
//        }
//        resultSet.close();
//        //statement.close();
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }

    public int executeUpdate(String sql){   //可以增删改,但是不能查询
        try {
//    String insertData = "INSERT into jobs(job_id,job_title) values('xccxxx','ffccfffffff')";
            //Statement statement = this.con.createStatement();
            //statement.close();
            return this.ps.executeUpdate(sql);  //添加
        } catch (Exception e) {
            System.out.println(e.toString());
            return 0;
        }
    }

    public boolean execute(String sql) {   //可以增删改查
        try {
            return this.ps.execute(sql);  //添加
        } catch (Exception e) {
            System.out.println(e.toString());
            return false;
        }
    }








}

\src\com\user\dao\UserDao.java

package com.user.dao;

import com.data.entity.User;

import java.util.List;

public interface UserDao {

    /**
     * 添加用户
     * @param user 用户类
     * @return 影响行
     */
    public int insertUser(User user);

    /**
     * 删除数据
     * @param id 删除ID
     * @return 影响行
     */
    public int deleteUser(int id);

    /**
     * 修改数据
     * @param user 用户类
     * @return 影响行
     */
    public int updateUserId(User user);

    /**
     * 查询用户
     * @param id ID
     * @return 用户数组
     */
    public List<User> selectUserId(int id);

    /**
     * 查询所有
     * @return
     */
    public List<User> selectUser();
}

\src\com\user\dao\impl\Userimpl.java

package com.user.dao.impl;


import com.data.entity.JDBCUtils;
import com.data.entity.Mysql_Template_conn;
import com.data.entity.User;
import com.user.dao.UserDao;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class Userimpl implements UserDao {
    @Override
    public int insertUser(User user) {
            String  insertDataxx = "INSERT into user(user_name,password) values(?,?)";
            return JDBCUtils.newJdbcTemplate().update(insertDataxx,user.getUserName(),user.getPassword());    //动态参数
    }

    @Override
    public int deleteUser(int id) {
            String  insertDataxx = "DELETE FROM user WHERE user_id=?";
            return JDBCUtils.newJdbcTemplate().update(insertDataxx,id);    //动态参数

    }

    @Override
    public int updateUserId(User user) {
            String  insertDataxx = "update user set user_name=?,password=?  where user_id=?";
            return JDBCUtils.newJdbcTemplate().update(insertDataxx,user.getUserName(),user.getPassword(),user.getUserId());    //动态参数
    }

    @Override
    public List<User> selectUserId(int id) {
            return JDBCUtils.newJdbcTemplate().query("SELECT * FROM user where user_id=?", new BeanPropertyRowMapper<>(User.class),id);
    }

    @Override
    public List<User> selectUser() {
        return JDBCUtils.newJdbcTemplate().query("SELECT * FROM user", new BeanPropertyRowMapper<>(User.class));
    }
}

\src\text11.java

import com.data.entity.User;
import com.user.dao.UserDao;
import com.user.dao.impl.Userimpl;

public class text11 {
    public static void main(String[] args) {
        UserDao add=new Userimpl();
        System.out.println(add.insertUser(new User(null,"abc","123465")));

        System.out.println(add.deleteUser(2));

        add.updateUserId(new User(1,"abc111","111111"));

        add.selectUserId(1).forEach(ss->{
            System.out.println(ss);
        });

        add.selectUser().forEach(ff->{
            System.out.println(ff);
        });

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值