简单的三层框架以及使用dbutils进行数据库操作入门Word文件下载.docx
《简单的三层框架以及使用dbutils进行数据库操作入门Word文件下载.docx》由会员分享,可在线阅读,更多相关《简单的三层框架以及使用dbutils进行数据库操作入门Word文件下载.docx(51页珍藏版)》请在冰豆网上搜索。
界面层将用户录入的信息封装成实体类对象,然后传给业务层进行相关的业务处理,然后业务层选择需要调用的数据访问层,数据访问层负责将传递过来的实体对像中封装的信息提取出来,并且拼出SQL语句,将信息写入数据库。
显示信息:
数据访问层将数据库中的数据提取出来封装成实体对象,如果有多个对象的话继而封装成集合,然后传递给调用它的业务层进行业务处理,业务层再将处理过的实体对象或是集合传递给调用业务层的界面,界面最后将实体对象或是集合中封装的信息提取出来进行显示。
===============================================================================
2.编写实例(省略界面层和业务层)
需要的jar包:
数据库直连包,dbutils包
数据库:
stuDB
表:
USERS
表结构:
userIdintNOTNULLIDENTITY(1,1)PRIMARYKEY,
userNamenvarchar(20)NOTNULL,
passwordnvarchar(20)NOTNULL,
realNamenvarchar(20),
sexnvarchar
(2)
=========================================================
实体类:
UsersEntity
viewplaincopytoclipboardprint?
packagecom.saga.entity;
/**
*USERS表的实体类
*@authorsaga1320
*/
publicclassUsersEntity{
privateintuserId;
privateStringuserName;
privateStringpassword;
privateStringrealName;
privateStringsex;
publicUsersEntity(){
}
publicStringgetPassword(){
returnpassword;
publicvoidsetPassword(Stringpassword){
this.password=password;
publicStringgetRealName(){
returnrealName;
}
publicvoidsetRealName(StringrealName){
this.realName=realName;
publicStringgetSex(){
returnsex;
publicvoidsetSex(Stringsex){
this.sex=sex;
publicintgetUserId(){
returnuserId;
publicvoidsetUserId(intuserId){
this.userId=userId;
publicStringgetUserName(){
returnuserName;
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
/**
*USERS表的实体类
*@authorsaga1320
*/
publicUsersEntity(){
}
publicStringgetPassword(){
publicvoidsetPassword(Stringpassword){
publicStringgetRealName(){
publicvoidsetRealName(StringrealName){
publicStringgetSex(){
returnsex;
publicvoidsetSex(Stringsex){
publicintgetUserId(){
publicvoidsetUserId(intuserId){
publicStringgetUserName(){
publicvoidsetUserName(StringuserName){
}
===============================================================
2.1.没有使用dbutils的数据访问层(只需直连包)
首先,创建所有数据访问类的抽象基类BaseDAO
packagecom.saga.dao;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
*所有数据访问类的基类,其他数据访问类需继承此类
publicabstractclassBaseDAO{
//数据库连接驱动名
privatestaticfinalStringDRIVERNAME
="
com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
//数据库连接URL
privatestaticfinalStringRUL
jdbc:
sqlserver:
//localhost:
1433;
databaseName=stuDB"
//数据库用户名
privatestaticfinalStringUNAME="
sa"
//密码
privatestaticfinalStringPWD="
"
privateConnectionconn=null;
/**
*建立数据库连接
*@throwsClassNotFoundException
*@throwsSQLException
*/
privatevoidgetConnection()
throwsClassNotFoundException,SQLException{
Class.forName(DRIVERNAME);
conn=DriverManager.getConnection(RUL,UNAME,PWD);
publicBaseDAO(){
super();
*执行增,删,改,(带参数)
*@paramstrSqlsql语句
*@paramparam参数
*@returnsql语句所影响的行数
protectedintexecuteUpdate(StringstrSql,Object[]param)
if(conn==null||conn.isClosed()){
this.getConnection();
PreparedStatementpstat=conn.prepareStatement(strSql);
for(inti=0;
i<
param.length;
i++){
pstat.setObject(i+1,param[i]);
returnpstat.executeUpdate();
*执行增,删,改,(不带参数)
*@paramstrSqlsql语句
*@returnsql语句所影响的行数
protectedintexecuteUpdate(StringstrSql)
*带参数查询
*@paramparam参数
*@returnResultSet结果集
protectedResultSetexecuteQuery(StringstrSql,Object[]param)
throwsSQLException,ClassNotFoundException{
returnpstat.executeQuery();
*无参查询
protectedResultSetexecuteQuery(StringstrSql)
*关闭数据库连接
protectedvoidcloseConnection()throwsSQLException{
if(conn!
=null){
if(!
conn.isClosed()){
conn.close();
*所有数据访问类的基类,其他数据访问类需继承此类
publicabstractclassBaseDAO{
//数据库连接驱动名
privatestaticfinalStringDRIVERNAME
//数据库连接URL
privatestaticfinalStringRUL
//数据库用户名
//密码
/**
*建立数据库连接
*/
throwsClassNotFoundException,SQLException{
publicBaseDAO(){
*执行增,删,改,(带参数)
*@paramparam参数
*@returnsql语句所影响的行数
if(conn==null||conn.isClosed()){
i++){
*执行增,删,改,(不带参数)
*@paramstrSqlsql语句
*带参数查询
*@returnResultSet结果集
throwsSQLException,ClassNotFoundException{
*无参查询
*@throwsSQLException
*@throwsClassNotFoundException
*关闭数据库连接
protectedvoidcloseConnection()throwsSQLException{
=null){
conn.isClosed()){
接着,创建USERS表的数据访问类:
USersDAO
importjava.util.ArrayList;
importjava.util.List;
importcom.saga.entity.UsersEntity;
*USERS表的数据访问类,继承BaseDAO
publicclassUsersDAOextendsBaseDAO{
publicUsersDAO(){
*向USERS表中添加一条数据
*@paramuserUsersEntity封装了数据信息
*@returnint添加记录的行数
publicintinsertUser(UsersEntityuser)
int=0;
StringstrSql="
INSERTINTOUSERSVALUES(?
?
)"
Object[]param=newObject[]{
user.getUserName(),
user.getPassword(),
user.getRealName(),
user.getSex()
};
i=super.executeUpda