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;
}
}