jdbc终极篇

a_dao:数据访问层,接口设计
    AdminDao.java
    IAdminDao.java
b_entity:实体类
    Admin.java
c_util:工具类
    jdbcUtil.java
d_servlet:控制层
    AdminServlet.java
db.properties

db.properties

url=jdbc:mysql://localhost:3306/test
user=root
password=root
driverClass=com.mysql.jdbc.Driver

IAdminDao.java

package a_dao;

import java.util.List;

import c_jdbc.Admin;

/*
 * 数据访问层,接口设计
 * */

public interface IAdminDao {

    /*
     * 保存
     * */
    void save(Admin admin);

    /*
     * 根据用户名密码查询
     * */
    Admin findByNameAndPwd(Admin admin);

    Admin findByName(Admin admin);

    List<Admin> findAll();
}

AdminDao.java

package a_dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import c_jdbc.Admin;
import d_util.jdbcUtil;

public class AdminDao implements IAdminDao {

    private Connection conn;
    private QueryRunner qr = new QueryRunner();

    @Override
    public void save(Admin admin) {
        // TODO Auto-generated method stub
        String sql = "insert into admin (userName,password) values(?,?)";
        try {
            conn = jdbcUtil.getConnection();
            qr.update(conn, sql, admin.getUserName(),admin.getPassWord());
        } catch (Exception e) {
            // TODO: handle exception
            throw new RuntimeException();
        }finally{
            jdbcUtil.close(conn, null, null);
        }
    }

    @Override
    public Admin findByNameAndPwd(Admin admin) {
        // TODO Auto-generated method stub
        String sql = "select * from admin where userName=? and passWord=?";
        try {
            conn = jdbcUtil.getConnection();
            Admin ad = qr.query(conn, sql, 
                    new BeanHandler<Admin>(Admin.class),
                    admin.getUserName(),
                    admin.getPassWord());
            return ad;
        } catch (Exception e) {
            // TODO: handle exception
            throw new RuntimeException();
        }finally{
            jdbcUtil.close(conn, null, null);
        }
    }

    @Override
    public Admin findByName(Admin admin) {
        // TODO Auto-generated method stub
        String sql = "select * from admin where userName=?";
        try {
            conn = jdbcUtil.getConnection();
            Admin ad = qr.query(conn, sql, 
                    new BeanHandler<Admin>(Admin.class),
                    admin.getUserName());
            return ad;
        } catch (Exception e) {
            // TODO: handle exception
            throw new RuntimeException();
        }finally{
            jdbcUtil.close(conn, null, null);
        }
    }

    public List<Admin> findAll(){


        String sql = "select * from admin";


        //移动光标取第一行数据
        //boolean flag = rs.next();


        try{/*
            conn = jdbcUtil.getConnection();
            Statement stat = conn.createStatement();
            ResultSet rs = stat.executeQuery(sql);
            while(rs.next()){
            //根据列名称取值
            int id = rs.getInt("id");
            String userName = rs.getString("userName");
            String passWord = rs.getString("passWord");

            Admin admin = new Admin();
            admin.setId(id);
            admin.setUserName(userName);
            admin.setPassWord(passWord);
            list.add(admin);
            }
            return list;*/
            conn = jdbcUtil.getConnection();
            List<Admin> list = new ArrayList<Admin>();
            Admin ad = qr.query(conn, sql, 
                    new BeanHandler<Admin>(Admin.class));
            list.add(ad);
            return list;
        } catch (Exception e) {
            // TODO: handle exception
            throw new RuntimeException();
        }finally{
            jdbcUtil.close(conn, null, null);
        }
    }
}

Admin.java

package c_jdbc;

public class Admin {

    private int id;
    private String userName;
    private String passWord;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    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;
    }
    @Override
    public String toString() {
        return "Admin [id=" + id + ", userName=" + userName + ", passWord=" + passWord + "]";
    }


}

jdbc.java

package d_util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class jdbcUtil {

    private static String url = null;
    private static String user = null;
    private static String password = null;
    private static String driverClass = null;

    /**
     * 静态代码块中(只加载一次)
     */
    static{
        try {
            //读取db.properties文件
            Properties props = new Properties();
            /**
             *  . 代表java命令运行的目录
             *  在java项目下,. java命令的运行目录从项目的根目录开始
             *  在web项目下,  . java命令的而运行目录从tomcat/bin目录开始
             *  所以不能使用点.
             */
            //FileInputStream in = new FileInputStream("./src/db.properties");

            /**
             * 使用类路径的读取方式
             *  / : 斜杠表示classpath的根目录
             *     在java项目下,classpath的根目录从bin目录开始
             *     在web项目下,classpath的根目录从WEB-INF/classes目录开始
             */
            InputStream in = jdbcUtil.class.getResourceAsStream("/db.properties");

            //加载文件
            props.load(in);
            //读取信息
            url = props.getProperty("url");
            user = props.getProperty("user");
            password = props.getProperty("password");
            driverClass = props.getProperty("driverClass");


            //注册驱动程序
            Class.forName(driverClass);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("驱程程序注册出错");
        }
    }

    public static Connection getConnection(){
        try {
            Connection conn = DriverManager.getConnection(url,user,password);
            return conn;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            throw new RuntimeException();
        }
    }

    public static void close(Connection conn,Statement stat,ResultSet rs){
        if(rs!=null){
            try {
                rs.close();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if(stat!=null)
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        if(conn!=null)
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
    }   
}

AdminServlet.java

package f_servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import a_dao.AdminDao;
import a_dao.IAdminDao;
import c_jdbc.Admin;
import e_service.*;

/**
 * 4. 控制层开发
 * 
 * @author Jie.Yuan
 * 
 */
@SuppressWarnings("serial")
public class AdminServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // 编码
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();

        // 获取操作类型
        String method = request.getParameter("method");
        if ("register".equals(method)) {
                register(request,response);
        }else {
            out.print("未获取到操作类型");
        }
    }

    private void register(HttpServletRequest request, HttpServletResponse response) {
        // TODO Auto-generated method stub
        /*
        注册
        IAdminDao adminDao = new AdminDao();
        Admin admin = new Admin();
        String userName = request.getParameter("userName");
        String passWord = request.getParameter("passWord");
        admin.setUserName(userName);
        admin.setPassWord(passWord);
        adminDao.save(admin);
        */

        /*
        查询*/
            IAdminDao adminDao = new AdminDao();
            Admin admin = new Admin();
            String userName = request.getParameter("userName");
            String passWord = request.getParameter("passWord");

            System.out.println("接收参数:"+"userName:"+userName+"-passWord:"+passWord);

            admin.setUserName(userName);
            admin.setPassWord(passWord);

            System.out.println("接收参数admin1:"+"getUserName:"+admin.getUserName()+"-getPassWord:"+admin.getPassWord());


            Admin admin2 = adminDao.findByName(admin);
            System.out.println("接收参数admin2:"+"getUserName:"+admin2.getUserName()+"-getPassWord:"+admin2.getPassWord());


            Admin admin3 = adminDao.findByNameAndPwd(admin);
            System.out.println("接收参数admin3:"+"getUserName:"+admin3.getUserName()+"-getPassWord:"+admin3.getPassWord());

            List<Admin> list = adminDao.findAll();
            System.out.println(list);
            for(Admin admin4 : list){
                System.out.println("接收参数admin4:id:"+admin4.getId()+"-getUserName:"+admin4.getUserName()+"-getPassWord:"+admin4.getPassWord());
            }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38341596/article/details/80248444