Jdbc步骤

JDBC步骤

1. 基础版

  1. 导包(jdbc-jar包 mysql5选择mysql-connector-java-5.1.44.jar都可以 mysql8选择8版本)

  2. 注册驱动 Class.forName(“com.mysql.jdbc.Driver”);

  3. 获取连接对象Connection conn=DriverManager(“url”,“username”,“password”);

  4. 定义sql语句 String sql=“select * from 表名”;

  5. 获取执行sql的statement对象Statement stmt=conn.CreatStatement();

  6. 执行sql语句

    • int i=stmt.executeUpdate(sql)----适合增删改
    • ResultSet rs=stmt.executeQuery(sql)–适合查询
  7. 处理结果

  8. 关闭资源 后开的先关 rs、stmt、conn

    package test;
    
    import org.junit.Test;
    import pojo.Account;
    
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class accountTest {
        //查询acount账户表数据,封装为account对象,并且存储到ArrayList集合中
    
       @Test
        public void TestAccount() throws Exception {
           //注册驱动
           Class.forName("com.mysql.jdbc.Driver");
           //获取链接
           Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useSSL=false", "root", "");
           //定义sql语句
           String sql="select * from account";
           //获取执行对象
           Statement stmt =conn.createStatement();
           //执行sql语句
           ResultSet rs = stmt.executeQuery(sql);
           //结果处理
           List<Account> list=new ArrayList<>();
           while (rs.next()){
               String name = rs.getString("name");
               Date brith = rs.getDate("brith");
               int money = rs.getInt("money");
               Account account = new Account();
               account.setName(name);
               account.setBrith(brith);
               account.setMoney(money);
               list.add(account);
           }
           System.out.println(list);
    
           //关闭资源
           stmt.close();
           conn.close();
       }
    }
    

2. druid数据库

package test;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.junit.Test;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class druidTest {

    //数据库连接池测试
    @Test
    public void druidTest01() throws Exception {
        //导入druid jar包
        //定义配置文件
        Properties pop = new Properties();
        //加载配置文件
        pop.load(new FileInputStream("druid.properties"));
        //获取数据库链接对象
        DataSource ds = DruidDataSourceFactory.createDataSource(pop);
        //获取链接
        Connection conn = ds.getConnection();
        //定义sql语句
        String sql1="select a.money from account a where name=?";


        //获取执行sql的statement
        PreparedStatement pstmt = conn.prepareStatement(sql1);
        pstmt.setString(1,"张三");

        //执行sql
        ResultSet resultSet = pstmt.executeQuery();

        //结果处理


        //关闭资源
        resultSet.close();
        pstmt.close();
        conn.close();

        /*System.out.println(System.getProperty("user.dir"));*/

    }
}

3. 自定义工具类

  1. DButil:

    package com.lty.util;
    
    import java.sql.*;
    
    
    public class DBUtil {
    
        static {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        private static String url="jdbc:mysql://127.0.0.1:3306/test?useSSL=false";
        private static String  username="lty";
        private static String  password="?";
    
        //获取连接对象
        public static Connection getConnection(){
            //注册驱动
            //获取数据库连接
            Connection conn =null;
            try {
               conn=DriverManager.getConnection(url, username, password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            return conn;
        }
    
        //关闭资源
        public static void closeAll(ResultSet rs, Statement stmt,Connection conn){
            try {
                if (rs!=null){
                    rs.close();
                    rs=null;
                }
                if (stmt!=null){
                    stmt.close();
                    stmt=null;
                }
                if (conn!=null){
                    conn.close();
                    conn=null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
  2. entity.user实体类

    package com.lty.entity;
    
    public class User {
        private int userId;
        private String username;
        private String password;
        private String address;
        private String phone;
    
        public User() {
        }
    
        public User(int userId, String username, String password, String address, String phone) {
            this.userId = userId;
            this.username = username;
            this.password = password;
            this.address = address;
            this.phone = phone;
        }
    
        public int getUserId() {
            return userId;
        }
    
        public void setUserId(int userId) {
            this.userId = userId;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "userId=" + userId +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", address='" + address + '\'' +
                    ", phone='" + phone + '\'' +
                    '}';
        }
    }
    
  3. com.lty.IuserDao 接口

    package com.lty.dao;
    
    import com.lty.entity.User;
    
    import java.util.List;
    
    public interface IUserDao {
        /**
         * 查询所有
         * @return
         */
        List<User> selectAll();
    
        /**
         * 分页查询
         * @param cp 当前页数
         * @param ps 每页的最大条目数
         * @return 返回一个user类型的list集合
         */
        List<User> selectLimit(int cp,int ps);
    
        /**
         * 根据id查询一条记录
         * @param userId
         * @return
         */
        User selectById(int userId);
    
        /**
         * 添加一条数据
         * @param user
         * @return
         */
        int add(User user);
    
        /**
         * 修改某人数据
         * @param user
         * @return
         */
        int updateById(User user);
    
        /**
         * 根据某人id删除此人
         * @param userid
         * @return
         */
        int deleteById(int userid);
    }
    
  4. UserDaoImpl实现类

    package com.lty.dao.impl;
    
    import com.lty.dao.IUserDao;
    import com.lty.entity.User;
    import com.lty.util.DruidDataSourceUtil;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    
    import java.sql.SQLException;
    import java.util.List;
    
    public class UserDaoImpl implements IUserDao {
    private  QueryRunner qr=new QueryRunner(DruidDataSourceUtil.getDataSource());
    
        @Override
        public int add(User user) {
    
            try {
                return qr.update("insert into user(username,password,address,phone) " +
                        "values(?,?,?,?)",user.getUsername(),user.getPassword(),user.getAddress(),user.getPhone());
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return 0;
        }
    
        @Override
        public int updateById(User user) {
            try {
                return qr.update("update user set username=?,password=?,address=?,phone=?  where userId=? ",
                        user.getUsername(),user.getPassword(),user.getAddress(),user.getPhone(),user.getUserId());
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            return 0;
        }
    
        @Override
        public int deleteById(int userid) {
            try {
                return  qr.update("delete from user where userId=?",userid);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return 0;
        }
    }
    
  5. 测试类

    package com.lty.test;
    
    import com.lty.dao.IUserDao;
    import com.lty.dao.impl.UserDaoImpl;
    import com.lty.entity.User;
    import org.junit.Test;
    
    import java.util.List;
    
    public class TestUser {
        //查询所有
        @Test
        public void testSelectAll(){
            UserDaoImpl userDao = new UserDaoImpl();
            List<User> users = userDao.selectAll();
            for (User ss : users) {
                System.out.println(ss);
            }
        }
        //分页查询
        @Test
        public void TestSelectByLimit(){
            UserDaoImpl userDao = new UserDaoImpl();
            List<User> users = userDao.selectLimit(1, 5);
            for (User ss : users) {
                System.out.println(ss);
            }
        }
    
        //根据id查询
        @Test
        public  void TestSelectById(){
            UserDaoImpl userDao = new UserDaoImpl();
            System.out.println( userDao.selectById(1));
        }
    
        //增加数据
        @Test
        public void TestAdd(){
            IUserDao userDao = new UserDaoImpl();
            User user = new User(0,"小落","?","富人区","13336894561");
            System.out.println(userDao.add(user) > 0 ? "success" : "failed");
        }
        //修改数据
        @Test
        public void TestUpdate(){
            IUserDao userDao = new UserDaoImpl();
            User user = new User(9,"小落","111111","富人区","13336894561");
            System.out.println(userDao.updateById(user) > 0 ? "success" : "failed");
        }
        //删除数据
        @Test
        public void TestDelete(){
            IUserDao userDao = new UserDaoImpl();
            System.out.println(userDao.deleteById(99) > 0 ? "success" : "failed");
        }
    
    
    
    
    }
    

4. 自定义工具类升级版

  • db.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8
    user=root
    pass=
    
  • Env类

    package com.lty.util;
    
    import java.io.IOException;
    import java.util.Properties;
    
    public class Env extends Properties {
        private static Env instance=null;
    
        private Env(){
            //加载properties文件
            try {
                load(Env.class.getResourceAsStream("/db.properties"));
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
        public static Env getInstance(){
            if (instance==null){
                instance=new Env();
            }
            return instance;
        }
    }
    
  • DruidDataSourceUtil:

    package com.lty.util;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.util.Properties;
    
    public class DruidDataSourceUtil {
    
    private static DruidDataSource dataSource=null;
    
        static {
            Properties p=new Properties();
            //加载配置文件
            try {
                p.load(DruidDataSourceUtil.class.getResourceAsStream("/db.properties"));
    
                //获取数据库连接对象
               dataSource  = (DruidDataSource) DruidDataSourceFactory.createDataSource(p);
    
               //设置四个参数
                dataSource.setUrl(Env.getInstance().getProperty("url"));
                dataSource.setDriverClassName(Env.getInstance().getProperty("driver"));
                dataSource.setUsername(Env.getInstance().getProperty("user"));
                dataSource.setPassword(Env.getInstance().getProperty("pass"));
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static DataSource getDataSource(){
            return dataSource;
        }
    }
    
  • AllUtil:

    package com.lty.util;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class AllUtil<T> {
        private static Connection conn = null;
        private static PreparedStatement pstmt = null;
        private static ResultSet rs = null;
    
        //增删改通用
        public static int commonUpdate(String sql, Object... params) {
            //获取connection对象
            conn = DBUtil.getConnection();
            //获取执行sql的preperstatement
            try {
                pstmt = conn.prepareStatement(sql);
    
                //给sql语句设置?的值
                for (int i = 0; i < params.length; i++) {
                    Object param = params[i];
                    pstmt.setObject((i + 1), param);
                }
                //执行sql语句
                int i = pstmt.executeUpdate();
                return i;
    
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                //释放资源
                DBUtil.closeAll(rs, pstmt, conn);
            }
            return 0;
        }
    
        //查询通用
        public List<T> commomSelect(String sql, Rowmapper<T> rowmapper, Object... params) {
            List<T> list = null;
            //获取连接
            conn = DBUtil.getConnection();
            //获取执行sql的对象
            try {
                pstmt = conn.prepareStatement(sql);
                //设置参数
                for (int i = 0; i < params.length; i++) {
                    Object param = params[i];
                    pstmt.setObject((i + 1), param);
                }
                //执行sql
                rs = pstmt.executeQuery();
                if (rs != null) {
                    list = new ArrayList<>();
                    while (rs.next()) {
                        T t = rowmapper.getRow(rs);
                        list.add(t);
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                //关闭资源
                DBUtil.closeAll(rs, pstmt, conn);
            }
            return list;
        }
    }
    
  • Rowmapper接口

    package com.lty.util;
    
    import java.sql.ResultSet;
    
    public interface Rowmapper<T> {
        T getRow(ResultSet rs);
    
    }
    
  • RowMapperImpl:

    package com.lty.dao.impl;
    
    import com.lty.entity.Student;
    import com.lty.util.Rowmapper;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class RowMapperImpl implements Rowmapper<Student> {
        @Override
        public Student getRow(ResultSet rs) {
            try {
                Student stu = new Student(rs.getInt(1), rs.getString(2), rs.getInt(3
                ), rs.getDouble(4));
                return stu;
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    
  • student相关:

    package com.lty.entity;
    
    public class Student {
        private int sid;
        private  String name;
        private int age;
        private double score;
    
        public Student() {
        }
    
        public Student(int sid, String name, int age, double score) {
            this.sid = sid;
            this.name = name;
            this.age = age;
            this.score = score;
        }
    
        public int getSid() {
            return sid;
        }
    
        public void setSid(int sid) {
            this.sid = sid;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public double getScore() {
            return score;
        }
    
        public void setScore(double score) {
            this.score = score;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "sid=" + sid +
                    ", name='" + name + '\'' +
                    ", age=" + age +
                    ", score=" + score +
                    '}';
        }
    }
    
    package com.lty.dao;
    
    import com.lty.entity.Student;
    
    import java.util.List;
    
    public interface IStudentDao {
        /**
         * 查询所有
         * @return
         */
        List<Student> selectAll();
    
        /**
         * 分页查询
         * @param cp
         * @param ps
         * @return
         */
        List<Student> selectLimit(int cp,int ps);
    
        /**
         * 根据id查询
         * @param sid
         * @return
         */
        Student selectBySid(int sid);
    
        /**
         * 增加学生
         * @param student
         * @return
         */
        int insertStudent(Student student);
    
        /**
         * 修改学生
         * @param student
         * @return
         */
        int updateStudent(Student student);
    
        /**
         * 删除学生
         * @return
         */
        int deleteStudent();
    }
    
package com.lty.dao.impl;

import com.lty.dao.IStudentDao;
import com.lty.entity.Student;
import com.lty.util.DBUtil;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl implements IStudentDao {
    private Connection conn = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    private List<Student> list = null;

    @Override
    public List<Student> selectAll() {
        Student student=null;
        //获取数据库连接对象
        conn = DBUtil.getConnection();
        //定义sql语句
        String sql = "select * from student";
        //获取执行sql的preperstatement对象
        try {
            stmt = conn.createStatement();
            //执行sql
            rs = stmt.executeQuery(sql);
            if (rs != null) {
                list = new ArrayList<>();

                while (rs.next()) {
                   student=new Student(rs.getInt(1),rs.getString(2),rs.getInt(3),
                          rs.getDouble(4) );
                   list.add(student);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            DBUtil.closeAll(rs,  stmt,conn);
        }

        return list;
    }

    @Override
    public List<Student> selectLimit(int cp, int ps) {
        return null;
    }

    @Override
    public Student selectBySid(int sid) {
        return null;
    }

    @Override
    public int insertStudent(Student student) {
        return 0;
    }

    @Override
    public int updateStudent(Student student) {
        return 0;
    }

    @Override
    public int deleteStudent() {
        return 0;
    }
}

转账小系统

package com.lty.entity;

public class Account {
    private String aid;
    private String aname;
    private String password;
    private double money;

    public Account() {
    }

    public Account(String aid, String aname, String password, double money) {
        this.aid = aid;
        this.aname = aname;
        this.password = password;
        this.money = money;
    }

    public String getAid() {
        return aid;
    }

    public void setAid(String aid) {
        this.aid = aid;
    }

    public String getAname() {
        return aname;
    }

    public void setAname(String aname) {
        this.aname = aname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "aid='" + aid + '\'' +
                ", aname='" + aname + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                '}';
    }
}
package com.lty.dao;

import com.lty.entity.User;

import java.util.List;

public interface IAccountDao {
    /**
     * 转出金额
     * @param aid
     * @param password
     * @param money
     * @return
     */
    int cutAccount(String aid,String password,double money);

    /**
     * 转入金额
     * @param aid
     * @param password
     * @param money
     * @return
     */
    int saveAccount(String aid,double money);

    boolean transfer(String froid,String froPassword,String toid,double money);

}
package com.lty.dao.impl;

import com.lty.dao.IAccountDao;
import com.lty.util.AllUtil;

public class AccountDaoImpl implements IAccountDao {
    @Override
    public int cutAccount(String aid, String password, double money) {
        return  AllUtil.commonUpdate("update account set money=money-? where " +
                "aid=? and password=?", money,aid,password);

    }

    @Override
    public int saveAccount(String aid, double money) {
        return  AllUtil.commonUpdate("update account set money=money+? where aid=?", money,aid);

    }

    @Override
    public boolean transfer(String froid, String froPassword, String toid, double money) {
        int i = cutAccount(froid, froPassword, money);
        int i1 = saveAccount(toid, money);
        if (i>0&&i1>0){
            return true;
        }
        return false;
    }


}
package com.lty.servive;

public interface IAccountService {
    boolean transfer(String froid,String froPassword,String toid,double money);

}
package com.lty.servive.impl;

import com.lty.dao.IAccountDao;
import com.lty.dao.impl.AccountDaoImpl;
import com.lty.servive.IAccountService;
import com.lty.util.DBUtil;

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

public class AccountServiceimpl implements IAccountService {
    @Override
    public boolean transfer(String froid, String froPassword, String toid, double money) {
        IAccountDao acc = new AccountDaoImpl();
        Connection conn = DBUtil.getConnection();
        boolean flag = false;
        try {
            conn.setAutoCommit(false);
            int i = acc.cutAccount(froid, froPassword, money);
            int i1 = acc.saveAccount(toid, money);


            if (i>0&&i1>0){
                conn.commit();
                flag=true;
            }else {
                conn.rollback();
                flag=false;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return flag;
    }
}

测试类:

package com.lty.test;

import com.lty.servive.IAccountService;
import com.lty.servive.impl.AccountServiceimpl;

import java.util.Scanner;

public class TestAccountService {
    public static void main(String[] args) {
        IAccountService a=new AccountServiceimpl();
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入转账卡号:");
        String froid = sc.next();
        System.out.println("请输入转账人密码");
        String fropassword = sc.next();
        System.out.println("收款卡号:");
        String toid = sc.next();
        System.out.println("转账金额:");
        double money = sc.nextDouble();
        System.out.println(a.transfer(froid, fropassword, toid, money) ? "success" : "false");
    }
}

转账前
在这里插入图片描述

转账后:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值