Java基础开发之JDBC操作数据库增删改查,分页查询实例详解
对数据库的操作无非就是增删改查,其中数查询操作最为复杂,所以将查询单独讲解,我这里用的Mysql数据库
增删改查操作
分页查询操作
1.查询结果以list返回
2.查询结果以jsonArray返回
3.查询总记录条数
先看一下相关的配置信息
publicstaticfinalStringUSER_NAME="root"; publicstaticfinalStringPWD="123456789"; publicstaticfinalStringDRIVER="com.mysql.jdbc.Driver"; publicstaticfinalStringURL="jdbc:mysql://localhost:3306/web_demon"; /**分页查询默认每页记录条数*/ publicstaticfinalintPAGE_SIZE_DEFAULT=10;
增删改操作
获取数据库连接对象
/**
*获取数据库连接
*@return数据库连接对象
*/
publicConnectiongetConnection(Connectionconn){
if(conn==null){
try{
Class.forName(Config.DRIVER);
conn=DriverManager.getConnection(Config.URL,Config.USER_NAME,Config.PWD);
}catch(Exceptione){
e.printStackTrace();
}
}
returnconn;
}
封装增删改操作
/**
*新增,删除,插入操作
*@paramsql执行的sql语句
*例如:新增语句"insertintouser(name,sex)values(?,?)";
*删除语句"deletefromuserwhereid=?";
*修改语句"updateusersetname=?,sex=?whereid=?andsex=?";
*@paramvalues对应的参数值
*@return影响条数,-1为异常
*/
privateintexecute(Stringsql,Object...values){
Connectionconn=null;
PreparedStatementpStmt=null;
try{
conn=this.getConnection(conn);
pStmt=conn.prepareStatement(sql);
//设置参数
if(pStmt!=null&&values!=null&&values.length>0){
for(inti=0;i
调用方法
//新增
publicstaticvoidinsert(){
Stringsql="insertintouser(name,sex)values(?,?)";
Object[]values=newObject[]{"李四",0};
intres=baseImp.execute(sql,values);
System.out.println("insertres="+res);
}
//删除
publicstaticvoiddelete(){
Stringsql="deletefromuserwhereid=?";
Object[]values=newObject[]{2};
intres=baseImp.execute(sql,values);
System.out.println("deleteres="+res);
}
//更新
publicstaticvoidupdate(){
Stringsql="updateusersetname=?,sex=?whereid=?andsex=?";
Object[]values=newObject[]{"张三",1,1,0};
intres=baseImp.execute(sql,values);
System.out.println("updateres="+res);
}
查询操作
1.查询结果以list返回
/**
*查询结果以list返回
*@parampageIndex页数
*@parampageSize每页记录条数
*@paramattachTableName在结果集中是否给key值附加表名,例如:user.id,与id
*@paramsql查询语句例如:"selectu.id,u.name,u.sex,u.depart_idASdepartId,d.*fromuseru,departdwhereu.depart_id=d.id"
*@paramvalues
*@throwsSQLException
*/
privateList
调用list查询
publicstaticvoidqueryList(){
Stringsql="selectu.*,d.*fromuseru,departdwhereu.depart_id=d.id";
try{
List>dataList=baseImp.queryForListAttachTableName(2,2,sql,null);
//List>dataList=baseImp.queryForList(2,2,sql,null);
for(Mapmap:dataList){
for(Stringkey:map.keySet()){
System.out.print(key+"="+map.get(key)+"");
}
System.out.println();
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
结果
2.查询结果以jsonArray返回
/**
*查询结果以ArrayList返回
*@param在结果集中是否给key值附加表名,例如:user.id,与id
*@paramsql查询语句例如:"selectu.id,u.name,u.sex,u.depart_idASdepartId,d.*fromuseru,departdwhereu.depart_id=d.id"
*@paramvalues
*@throwsSQLException
*/
privateJSONArrayqueryJsonArray(intpageIndex,intpageSize,booleanattachTableName,Stringsql,Object...values)throwsSQLException{
JSONArrayjsonArray=null;
Connectionconn=null;
PreparedStatementpStmt=null;
//校验参数
if(pageIndex<=0){
pageIndex=1;
}
if(pageSize<=0){
pageSize=Config.PAGE_SIZE_DEFAULT;
}
conn=this.getConnection(conn);
pStmt=conn.prepareStatement(sql);
//设置参数
if(pStmt!=null&&values!=null&&values.length>0){
for(inti=0;i
调用jsonArray查询
publicstaticvoidqueryJsonArray(){
//Stringsql="select*fromuseru";
Stringsql="selectu.*,d.*fromuseru,departdwhereu.depart_id=d.id";
//Stringsql="selectu.idASuid,u.name,u.sex,u.depart_idASdepartId,d.namefromuseru,departdwhereu.depart_id=d.id";
//Stringsql="selectu.id,u.name,u.sex,u.depart_idASdepartId,d.*fromuseru,departdwhereu.depart_id=d.id";
try{
JSONArrayjsonArray=baseImp.queryForJsonArrayAttachTableName(2,2,sql,null);
//JSONArrayjsonArray=baseImp.queryForJsonArray(sql,null);
System.out.println(jsonArray.toString());
for(inti=0;iiterator=jsonObject.keys();
Objectkey=null;
while(iterator.hasNext()){
key=iterator.next();
System.out.print(key+""+jsonObject.get(key)+"");
}
System.out.println();
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
结果
[{"user.id":"4","user.name":"王五","user.sex":"0","user.depart_id":"3","depart.id":"3","depart.name":"研发部","depart.desc":"这是研发部"},{"user.id":"5","user.name":"赵六","user.sex":"1","user.depart_id":"1","depart.id":"1","depart.name":"测试部","depart.desc":"这是测试部"}]
user.id4user.name王五user.sex0user.depart_id3depart.id3depart.name研发部depart.desc这是研发部
user.id5user.name赵六user.sex1user.depart_id1depart.id1depart.name测试部depart.desc这是测试部
3.查询总记录条数
/**
*查询记录条数
*@paramsql例如:"selectcount(*)fromuserwherexxx"
*@paramvalues
*@throwsSQLException
*/
publicintqueryCount(Stringsql,Object...values)throwsSQLException{
intcount=-1;
Connectionconn=null;
PreparedStatementpStmt=null;
conn=this.getConnection(conn);
pStmt=conn.prepareStatement(sql);
//设置参数
if(pStmt!=null&&values!=null&&values.length>0){
for(inti=0;i
调用查询总记录条数
publicstaticvoidqueryCount(){
Stringsql="selectcount(*)fromuseru";
try{
System.out.println("count="+baseImp.queryCount(sql,null));
}catch(SQLExceptione){
e.printStackTrace();
}
}
结果
至此我们介绍完了Java基础开发中JDBC对数据库进行增删改查操作与分页查询,如果想了解更多关于这方面的文章大家可以查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。