首页 > 代码库 > 软工实训--学习回顾2

软工实训--学习回顾2

Mybatis的建立,涉及的代码:

Dbutils.java:

package cn.neusoft.mybatis.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Dbutils {
    
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/mybatis";
    private static final String UNAME = "root";
    private static final String UPWD = "123";
    
    private static Connection con = null;//连接对象  
    private static ResultSet rs = null;//放查询结果的
    private static PreparedStatement ps = null;//放sql文并且可以拼接sql文的对象
    
    static{
        try {//驱动加载
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    //获取连接
    public static void getConnection(){
        try {
            con = DriverManager.getConnection(URL, UNAME, UPWD);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //关闭连接
    public static void closeAll(){
        if(null!=rs){
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(null!=ps){
            try {
                ps.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(null!=con){
            try {
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    //执行查询
    public static ResultSet executeQuery(String sql,Object[] obj){
        getConnection();
        //System.out.println(obj);
        //如果sql文不完整,是需要进行拼接的
        try {
            ps = con.prepareStatement(sql);
            
            if(null!=obj){
                for(int i=0;i<obj.length;i++){
                    ps.setObject(i+1, obj[i]);
                }
            }
            rs = ps.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return rs;
    }
    //公共的执行  增、删、改 操作 insert  delete   update
    public static int executeUpdate(String sql,Object[] obj){
        int count = 0;
        getConnection();
        try {
            ps = con.prepareStatement(sql);
            if(null!=obj){
                for(int i=0;i<obj.length;i++){
                    ps.setObject(i+1, obj[i]);
               }
            }
            count = ps.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            closeAll();
        }
        return count;
    }
    //如果要使用创表语句之类,可以使用如下代码
    public static boolean executeCreate(String sql,Object[] obj){
        getConnection();
        boolean b =false;
        try {
            ps = con.prepareStatement(sql);
            if(null!=obj){
                for(int i=0;i<obj.length;i++){
                    ps.setObject(i+1, obj[i]);
                }
            b = ps.execute();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            closeAll();
        }
        if(b){
            return true;
        }
        return false;
    }
}

JDBC测试包:
package cn.neusoft.mybatis.jdbc;

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

public class TestJdbc {

    /**
     *jdbc  主要用于  java程序  访问数据库
     */
    public static void main(String[] args) {
        //连接信息
        //数据库链接
        Connection con = null;
        //预编译对象
        PreparedStatement ps = null;
        //如果要进行查询操作,需要使用    结果集对象
        ResultSet rs = null;        
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            //jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
            //                localhost代表访问地址   可以是127.0.0.1 也可以是localhost
            //              还可以是ip地址   3306代表端口号     mybatis是数据库名   严格区分大小写
            con = DriverManager.getConnection(
                    "jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf-8",
                    "root",
                    "123");
            //sql 文处理     ? 只是一个占位符
            String sql = "select * from userinfo where username = ?";
            // *  代替所有  对于本句 包含了  userid,username,pwd  三列
            //实际开发 写成   select userid,username,pwd from userinfo where
            //                username=?
            //把sql 文放入预编译对象进行处理
            ps = con.prepareStatement(sql);
            //给ps  对象  传入你要具体查询的人的信息   相当于  给之前sql 文 的  ?  传值
            ps.setString(1, "张三");
            //这里的方法是执行一个查询操作,需要把查询结果放在ResultSet中
            //   如果是要执行  插入、删除、更新操作    ps.execute();
            rs = ps.executeQuery();
            //把查询结果  从rs 对象中取出来
            while(rs.next()){
                //  rs.getInt("userid")  是sql文中的  userid        
                int userid = rs.getInt("userid");
                String username = rs.getString("username");
                String pwd = rs.getString("pwd");
                
                System.out.println("编号:"+userid+"姓名:"+username+"密码"+
                pwd);
            }
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

示例:

有1000条数据  

每页只会显示部分  ,每页显示20条数据

第一页  显示1-20条

第二页  显示21-40条

 问:每页显示3条记录的情况

(每页显示几条  以及  页码)

(3n-2,3n)

select * from userinfo limit 3(n-1),3;

select * from userinfo limit  pageSize(pageNo-1),pageSize;

 

package cn.neusoft.mybatis.pojo;

 

实体类Userinfo的建立://主要
/**
 *   Userinfo  是一个实体类  用于 与表作对应的实体映射文件
 *        该类中   各个属性   对应   userinfo 表中的属性
 */
public class Userinfo {
    private Integer userid;
    private String username;
    private String pwd;
    
    @Override
    public String toString() {
        return "Userinfo [userid=" + userid + ", username=" + username
                + ", pwd=" + pwd + "]";
    }
    //生成 get set 方法        alt+shift+s  选择 set get 方法生成
    //生成构造方法  
    //无参的构造方     如果不写的话,默认生成一个   无参的构造方法
    public Userinfo() {
        super();
    }
    //有参的构造方法
        public Userinfo(String username, String pwd) {
        super();
        this.username = username;
        this.pwd = pwd;
    }
    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    
    
}

待续。。。。。。

 

软工实训--学习回顾2