java通用dao類代碼 java中的dao類什么意思?

java里面實(shí)體類和dao類 有一段實(shí)例,希望各位高手給注釋一下 要詳細(xì)的注釋,字?jǐn)?shù)有限 就不想實(shí)體類了

package s2jsp.bysj.dao; //此類所在包的名稱

創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的做網(wǎng)站、成都網(wǎng)站制作和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計(jì)客戶上1000家,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長!

import java.sql.Connection; //導(dǎo)入Connection類

import java.sql.PreparedStatement; //導(dǎo)入PreparedStatement類

import java.sql.ResultSet; //導(dǎo)入ResultSet類

import java.util.ArrayList; //導(dǎo)入ArrayList類

import java.util.List; //導(dǎo)入List類

import s2jsp.bysj.entity.Users; //導(dǎo)入U(xiǎn)sers實(shí)體類

public class UserDao extends BaseDao { //UserDao類繼承了BaseDao類

private Connection conn; //聲明私有變量:Connection對(duì)象

private PreparedStatement pstmt; //聲明私有變量:PreparedStatement對(duì)象

private ResultSet rs; //聲明私有變量:ResultSet數(shù)據(jù)集對(duì)象

/**

* 根據(jù)用戶名和密碼,查找相關(guān)用戶信息

* @return Users類的對(duì)象:用戶對(duì)象

*@userName 用戶名

*@password 用戶密碼

*/

public Users findUsers(String userName, String password) {

Users user = null; //聲明實(shí)體類Users對(duì)象

String sql = "select * from users where userName=? and password=? "; //定義sql變量,此變量用來代替執(zhí)行的SQL語句

try { //將會(huì)發(fā)生異常的代碼放在了try{}catch{}塊中

conn = this.getConn(); //初始化了Connection對(duì)象:conn,getConn()方法是繼承自BaseDao的方法

pstmt = conn.prepareStatement(sql); //初始化PreparedStatement對(duì)象:pstmt

pstmt.setString(1, userName); //為SQL語句中的參數(shù)1設(shè)置值

pstmt.setString(2, password); //為SQL語句中的參數(shù)2設(shè)置值

rs = pstmt.executeQuery(); //用PreparedStatement的對(duì)象的executeQuery()方法初始化ResultSet對(duì)象:rs

if (rs.next()) { //如果ResultSet的next()方法返回true,則說明目標(biāo)數(shù)據(jù)庫中的下一行有數(shù)據(jù)

user = new Users(); //初始化Users實(shí)體類,此類準(zhǔn)備用來初始化其域

user.setUserID(rs.getInt("userID")); //用數(shù)據(jù)庫中的值初始化Users實(shí)體類中的UserID字段

user.setUserName(userName); //用數(shù)據(jù)庫中的值初始化Users實(shí)體類中的UserName字段

user.setPassword(password); //用數(shù)據(jù)庫中的值初始化Users實(shí)體類中的Password字段

user.setStatus(rs.getInt("status")); //用數(shù)據(jù)庫中的值初始化Users實(shí)體類中的Status字段

}

} catch (Exception e) { //catch內(nèi)使用了Exception異常根類的printStackTrace()方法:表示將錯(cuò)誤信息打印在堆棧上

e.printStackTrace();

} finally { //finally塊中的語句表示始終要執(zhí)行的語句,并且在try語句塊后執(zhí)行

this.closeAll(conn, pstmt, rs); //try語句塊中執(zhí)行完畢或發(fā)生異常則使用closeAll()關(guān)閉所有使用到的數(shù)據(jù)庫連接對(duì)象,此處省略this也可以,conn是Connection對(duì)象,pstmt是PreparedStatement對(duì)象,rs是ResultSet對(duì)象

}

return user; //此方法最后返回Users實(shí)體類的對(duì)象,注:如果方法定義有返回值則一定要加此關(guān)鍵字

}

/**

* 判斷數(shù)據(jù)庫中當(dāng)前用戶名是否存在

* @param userName 用戶名

* @return 存在返回true,否則返回false

*/

public boolean findUsers(String userName){ //此方法用來查找傳入的用戶是否存在,返回一個(gè)布爾類型的值,true表示存在,false表示不存在

String sql = "select * from users where userName=? "; //定義SQL語句并放入sql變量中,這樣的好處是簡(jiǎn)化了代碼的長度和復(fù)用的便利

try {

conn = this.getConn(); //用BaseDao類的getConn()方法初始化Connection對(duì)象:conn

pstmt = conn.prepareStatement(sql); //用Connection對(duì)象的prepareStatement()方法初始化PreparedStatement對(duì)象:pstmt

pstmt.setString(1, userName); //設(shè)置SQL語句參數(shù)1的值:userName

rs = pstmt.executeQuery(); //使用PreparedStatement對(duì)象的executeQuery()方法初始化ResultSet對(duì)象:rs

if (rs.next()) { //如果數(shù)據(jù)庫中有記錄則返回true,此時(shí)方法停止

return true;

}

} catch (Exception e) {

e.printStackTrace(); //將錯(cuò)誤信息打印到控制臺(tái)

} finally {

this.closeAll(conn, pstmt, rs); //關(guān)閉所有使用到的數(shù)據(jù)庫連接對(duì)象,此處可省略this關(guān)鍵字

}

return false; //最后的返回值可以是任意布爾類型的值

}

/**

* 添加用戶信息

* @param userName

* @param password

* @return 操作數(shù)據(jù)庫影響行數(shù)

*/

public int insertUser(String userName, String password,int status) { //插入一個(gè)用戶的方法,此方法類的參數(shù)跟數(shù)據(jù)庫中強(qiáng)制不為空的列是一一對(duì)應(yīng)的

String sql = "insert into users values(?,?,?) "; //定義SQL語句

String[] params = new String[] { userName, password ,status+""}; //定義字符串?dāng)?shù)組用來存放傳入的參數(shù),因?yàn)閭魅氲膮?shù)可能不止一個(gè)所以定義一個(gè)字符串?dāng)?shù)組來存放,困了余下的代碼都差不多所以我簡(jiǎn)單寫了

return this.executeSQL(sql, params);

}

/**

* 查找所有的注冊(cè)用戶信息

* @return 用戶列表

*/

public List selectAllUser(){

List list=new ArrayList(); //實(shí)例化一個(gè)ArrayList對(duì)象,因?yàn)锳rrayList是List對(duì)象的子類

String sql = "select * from users ";

try {

conn = this.getConn();

pstmt = conn.prepareStatement(sql);

rs = pstmt.executeQuery();

while(rs.next()) {

Users user = new Users();

user.setUserID(rs.getInt("userID"));

user.setUserName(rs.getString("userName"));

user.setPassword(rs.getString("password"));

user.setStatus(rs.getInt("status"));

list.add(user);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

this.closeAll(conn, pstmt, rs);

}

return list; //此方法返回一個(gè)List對(duì)象

}

/**

* 根據(jù)用戶ID,進(jìn)行刪除操作

* @param userID

* @return 執(zhí)行SQL語句所影響的數(shù)據(jù)庫行數(shù)

*/

public int deleteUserByID(String userID){

String sql="delete from users where userID = ? "; //?號(hào)表示占位符號(hào)此處要用一個(gè)變量表示

String[] param = new String[]{ userID };

return this.executeSQL(sql, param);

}

}

//PreaparedStatement和Statement比較而言,PreparedStatement更適合于做修改插入的操作,應(yīng)為此類是預(yù)編譯的類,他的執(zhí)行效率要高于Statement類。而普通的查詢則使用Statement就可以了。

//ResultSet是結(jié)果集的意思,他用來存放從數(shù)據(jù)庫中讀取到的所有數(shù)據(jù),他用next()方法來確定下一行是否還有數(shù)據(jù),用返回的布爾類型值類表示。使用ResultSet對(duì)象的getXX(index)方法獲取程序從數(shù)據(jù)庫中讀取到的值,index為參數(shù)位置,從1開始,1對(duì)應(yīng)數(shù)據(jù)中第一個(gè)字段。

//Connection是連接的意思,他的PreparedStatement和createStatement分別用來初始化PreaparedStatement對(duì)象和Statement對(duì)象。為SQL語句中的參數(shù)賦值用PreparedStatement對(duì)象的setXX(index,值)方法,參數(shù)位置從1開始遞增。

//List是一個(gè)接口,ArrayList是實(shí)現(xiàn)了List接口的類,也可以其為List的子類,所以List lst=new ArrayList();是一種編譯時(shí)多態(tài)的表現(xiàn),是完全允許的。其返回的是ArrayList子類的對(duì)象。ArrayList一般用來對(duì)數(shù)據(jù)的遍歷查詢,而LinkedList則比較擅長于增刪改,他們都是集合,在此處用來存放實(shí)體類的對(duì)象。

//try{}catch{}finally{}就不用我多說了吧!用來捕捉容易發(fā)生異常的代碼段,一些拋出異常的類是要求強(qiáng)制捕捉的,如果不捕捉編輯器會(huì)報(bào)告一個(gè)錯(cuò)誤。finally{}塊中的代碼是無論代碼執(zhí)行正確與否則都會(huì)執(zhí)行,此處用來對(duì)數(shù)據(jù)庫連接對(duì)象執(zhí)行關(guān)閉操作。

//其實(shí)我也是一個(gè)初學(xué)者,說了這么多也許還有很多沒說到的地方,當(dāng)然這段代碼如果要解釋完全是要牽扯到很多Java知識(shí),應(yīng)為篇幅和個(gè)人精力和知識(shí)量有限,先說到這兒了,各位也請(qǐng)多多包涵,多多指正吧!

Java中dao包biz包中具體寫什么怎么分類

dao,數(shù)據(jù)層,意思很清楚,我只做數(shù)據(jù)庫操作,每個(gè)dao只針對(duì)一張表操作,我不做任何業(yè)務(wù)

biz,業(yè)務(wù)層,我只做某方面的業(yè)務(wù)處理,如果需要數(shù)據(jù)庫工作,聯(lián)系下數(shù)據(jù)部門(dao)協(xié)助我,業(yè)務(wù)層不會(huì)出現(xiàn)數(shù)據(jù)操作代碼

你說的connection , SQL增刪改查方法這些一定是數(shù)據(jù)層的

哪個(gè)是繼承接口?你說的是實(shí)現(xiàn)接口吧

指的是把需要的方法抽象成接口類,并實(shí)現(xiàn)它

給些簡(jiǎn)單的代碼:

//biz 接口

public interface UserBiz {

long addUser(Users users);

Users getUsersById(long id);

boolean isUserExists(Users users);

Users login(Users users);

}

//biz實(shí)現(xiàn)

public class UserBizImpl implements UserBiz {

private final UserDao dao;

public UserBizImpl(final UserDao dao) {

super();

this.dao = dao;

}

/*

* (non-Javadoc)

* @see biz.UserBiz#addUser(entity.Users)

*/

@Override

public long addUser(final Users users) {

return dao.add(users);

}

/*

* (non-Javadoc)

* @see biz.UserBiz#getUsersById(long)

*/

@Override

public Users getUsersById(final long id) {

return dao.getUsersById(id);

}

/*

* (non-Javadoc)

* @see biz.UserBiz#isUserExists(entity.Users)

*/

@Override

public boolean isUserExists(final Users users) {

if (!ObjectUtils.isEmpty(dao.getUsersByName(users

.getUserName()))) {

return true;

}

return false;

}

/*

* (non-Javadoc)

* @see biz.UserBiz#login(entity.Users)

*/

@Override

public Users login(final Users users) {

final Users users2 = dao.getUsersByName(users.getUserName());

if (ObjectUtils.isEmpty(users2)) {

return null;

}

if (users2.getUserPassword().equals(users.getUserPassword())) {

return users2;

}

return null;

}

}

//dao接口

public interface UserDao {

long add(Users users);

boolean del(long id);

Users getUsersById(long id);

Users getUsersByName(String name);

ListUsers search(Users condition);

boolean update(Users users);

}

//dao實(shí)現(xiàn)就不給了,因?yàn)槭褂胔ibernate實(shí)現(xiàn)

java中的Dao類是什么意思?

DAO是Data Access Object數(shù)據(jù)訪問接口,數(shù)據(jù)訪問:顧名思義就是與數(shù)據(jù)庫打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。

在核心J2EE模式中是這樣介紹DAO模式的:為了建立一個(gè)健壯的J2EE應(yīng)用,應(yīng)該將所有對(duì)數(shù)據(jù)源的訪問操作抽象封裝在一個(gè)公共API中。

用程序設(shè)計(jì)的語言來說,就是建立一個(gè)接口,接口中定義了此應(yīng)用程序中將會(huì)用到的所有事務(wù)方法。在這個(gè)應(yīng)用程序中,當(dāng)需要和數(shù)據(jù)源進(jìn)行交互的時(shí)候則使用這個(gè)接口,并且編寫一個(gè)單獨(dú)的類來實(shí)現(xiàn)這個(gè)接口在邏輯上對(duì)應(yīng)這個(gè)特定的數(shù)據(jù)存儲(chǔ)。

擴(kuò)展資料:

Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程 。

Java具有簡(jiǎn)單性、面向?qū)ο蟆⒎植际健⒔研浴踩浴⑵脚_(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn) 。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

JRE是個(gè)運(yùn)行環(huán)境,JDK是個(gè)開發(fā)環(huán)境。因此寫Java程序的時(shí)候需要JDK,而運(yùn)行Java程序的時(shí)候就需要JRE。而JDK里面已經(jīng)包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運(yùn)行Java程序。

但由于JDK包含了許多與運(yùn)行無關(guān)的內(nèi)容,占用的空間較大,因此運(yùn)行普通的Java程序無須安裝JDK,而只需要安裝JRE即可。

參考資料來源:百度百科-java

使用java SSH寫通用dao層和service層。

import java.io.Serializable;

import java.util.List;

import java.util.Map;

public interface ICommonDao {

public Serializable save(Object entity);

public void update(Object entity);

public void merge(Object entity);

public void delete(Object entity);

public Object findObject(Class clazz, Serializable id);

public List findList(String queryString);

public List findList(String queryString, Map args);

public Object findUniqueResult(String hql);

public List findList(final String hql, final int num);

}

import java.io.Serializable;

import java.util.List;

import java.util.Map;

public interface ICommonService {

public Serializable save(Object entity);

public void update(Object entity);

public void merge(Object entity);

public void delete(Object entity);

public Object findObject(Class clazz, Serializable id);

public List findList(String queryString);

public List findList(String queryString, Map args);

public Object findUniqueResult(String hql);

public List findList(final String hql, final int num);

}

實(shí)現(xiàn)類,用CommonDaoImpl實(shí)現(xiàn)ICommonDao

用CommonServiceImpl實(shí)現(xiàn)ICommonService

實(shí)現(xiàn)的時(shí)候直接調(diào)用hibernateTemplate中的方法就行,或者自己寫點(diǎn)兒,都不難

dao常用的java代碼是什么,幫提供一下。謝謝

//以下是我做的時(shí)候做的代碼,比較全,希望而已幫到你,記得采納

public class Dao extends HttpServlet{

private static final long serialVersionUID = 1L;

public static Connection getconnectoin(){

Connection conn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(

"jdbc:mysql:///shopping?useUnicode=truecharacterEncoding=utf-8",

"****",

"******);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

public void add(String ids){

String[] idss=ids.split(",");

try {

Connection conn= getconnectoin();

String sql = "insert into goo888 values(null,?)";

PreparedStatement ps = conn.prepareStatement(sql);

for (int i = 0; i idss.length; i++) {

ps.setInt(1, Integer.parseInt(idss[i]));

ps.execute();

}

} catch (SQLException e) {

e.printStackTrace();

}

}

public ListInfo goolist(String name) {

Info info = null;

System.out.println("姓名:"+name);

ListInfo list = new ArrayListInfo();

try {

Connection conn= getconnectoin();

String sql = "select b.id,a.name from wfp888 a join goo888 b on a.id=b.shop_id "

+ "where a.name like ? ";

PreparedStatement ps = conn.prepareStatement(sql);

ps.setString(1, "%"+name+"%");

ResultSet rs = ps.executeQuery();

while(rs.next()){

info = new Info();

info.setName(rs.getString("name"));

info.setId(rs.getInt("id"));

list.add(info);

}

} catch (Exception e) {

e.printStackTrace();

}

return list;

}

public void delete(int id) {

try {

Connection conn= getconnectoin();

String sql = "delete from goo888 where id=? ";

PreparedStatement ps = conn.prepareStatement(sql);

ps.setInt(1, id);

ps.execute();

} catch (Exception e) {

e.printStackTrace();

}

}

public ListInfo findAllInfo() {

Info info = null;

ListInfo list = new ArrayListInfo();

try {

Connection conn= getconnectoin();

String sql = "select * from wfp888 ";

PreparedStatement ps = conn.prepareStatement(sql);

ResultSet rs = ps.executeQuery();

while(rs.next()){

info = new Info();

info.setId(rs.getInt("id"));

info.setCode(rs.getString("code"));

info.setName(rs.getString("name"));

list.add(info);

}

} catch (Exception e) {

e.printStackTrace();

}

return list;

}

文章題目:java通用dao類代碼 java中的dao類什么意思?
鏈接地址:http://m.kartarina.com/article14/hjgdge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)動(dòng)態(tài)網(wǎng)站服務(wù)器托管網(wǎng)站營銷建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
主站蜘蛛池模板: 97无码免费人妻超级碰碰夜夜| 久久久久亚洲AV无码专区首JN| 亚洲a∨无码一区二区| 中文字幕丰满乱孑伦无码专区| 精品无码成人久久久久久| 无码熟妇人妻在线视频| 精品人妻系列无码人妻漫画| 麻豆亚洲AV永久无码精品久久| 深夜a级毛片免费无码| 无码视频在线观看| 欧洲精品无码一区二区三区在线播放 | 亚洲日韩欧洲无码av夜夜摸| 亚洲精品无码久久久久秋霞| 精品人妻系列无码一区二区三区| 无码人妻丰满熟妇啪啪| 精品日韩亚洲AV无码一区二区三区| 四虎成人精品无码永久在线 | 丰满熟妇人妻Av无码区| 久久亚洲av无码精品浪潮| 国产精品无码v在线观看| 亚洲AV无码乱码麻豆精品国产| 熟妇人妻系列aⅴ无码专区友真希| 中文无码热在线视频| 无码人妻精品内射一二三AV| 亚洲av永久无码精品秋霞电影影院| 一本大道无码人妻精品专区| 久久亚洲AV成人无码国产电影| 亚洲一区无码中文字幕| 国产精品无码国模私拍视频 | 日韩免费a级毛片无码a∨| 无码国产乱人伦偷精品视频| 在线看无码的免费网站| 国产成人无码久久久精品一| 中文字幕久无码免费久久| av无码aV天天aV天天爽| 午夜无码一区二区三区在线观看 | 亚洲精品无码日韩国产不卡av| 人妻中文字幕无码专区| 久久久久久人妻无码| 色窝窝无码一区二区三区| 久久久久亚洲AV无码麻豆|