日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java jdbc dao_Java自学-JDBC DAO

發(fā)布時間:2025/3/15 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jdbc dao_Java自学-JDBC DAO 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基于JDBC設(shè)計(jì)DAO的實(shí)例

DAO=DataAccess Object

數(shù)據(jù)訪問對象

實(shí)際上就是運(yùn)用了ORM中的思路,把數(shù)據(jù)庫相關(guān)的操作都封裝在這個類里面,其他地方看不到JDBC的代碼

步驟 1 : DAO接口

package jdbc;

import java.util.List;

import charactor.Hero;

public interface DAO{

//增加

public void add(Hero hero);

//修改

public void update(Hero hero);

//刪除

public void delete(int id);

//獲取

public Hero get(int id);

//查詢

public List list();

//分頁查詢

public List list(int start, int count);

}

步驟 2 : HeroDAO

設(shè)計(jì)類HeroDAO,實(shí)現(xiàn)接口DAO

把驅(qū)動的初始化放在了構(gòu)造方法HeroDAO里:

public HeroDAO() {

try {

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

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

因?yàn)轵?qū)動初始化只需要執(zhí)行一次,所以放在這里更合適,其他方法里也不需要寫了,代碼更簡潔

提供一個getConnection方法返回連接

所有的數(shù)據(jù)庫操作都需要事先拿到一個數(shù)據(jù)庫連接Connection,以前的做法每個方法里都會寫一個,如果要改動密碼,那么每個地方都需要修改。 通過這種方式,只需要修改這一個地方就可以了。 代碼變得更容易維護(hù),而且也更加簡潔。

package jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import charactor.Hero;

public class HeroDAO implements DAO{

public HeroDAO() {

try {

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

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public Connection getConnection() throws SQLException {

return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root",

"admin");

}

public int getTotal() {

int total = 0;

try (Connection c = getConnection(); Statement s = c.createStatement();) {

String sql = "select count(*) from hero";

ResultSet rs = s.executeQuery(sql);

while (rs.next()) {

total = rs.getInt(1);

}

System.out.println("total:" + total);

} catch (SQLException e) {

e.printStackTrace();

}

return total;

}

public void add(Hero hero) {

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

try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {

ps.setString(1, hero.name);

ps.setFloat(2, hero.hp);

ps.setInt(3, hero.damage);

ps.execute();

ResultSet rs = ps.getGeneratedKeys();

if (rs.next()) {

int id = rs.getInt(1);

hero.id = id;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

public void update(Hero hero) {

String sql = "update hero set name= ?, hp = ? , damage = ? where id = ?";

try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {

ps.setString(1, hero.name);

ps.setFloat(2, hero.hp);

ps.setInt(3, hero.damage);

ps.setInt(4, hero.id);

ps.execute();

} catch (SQLException e) {

e.printStackTrace();

}

}

public void delete(int id) {

try (Connection c = getConnection(); Statement s = c.createStatement();) {

String sql = "delete from hero where id = " + id;

s.execute(sql);

} catch (SQLException e) {

e.printStackTrace();

}

}

public Hero get(int id) {

Hero hero = null;

try (Connection c = getConnection(); Statement s = c.createStatement();) {

String sql = "select * from hero where id = " + id;

ResultSet rs = s.executeQuery(sql);

if (rs.next()) {

hero = new Hero();

String name = rs.getString(2);

float hp = rs.getFloat("hp");

int damage = rs.getInt(4);

hero.name = name;

hero.hp = hp;

hero.damage = damage;

hero.id = id;

}

} catch (SQLException e) {

e.printStackTrace();

}

return hero;

}

public List list() {

return list(0, Short.MAX_VALUE);

}

public List list(int start, int count) {

List heros = new ArrayList();

String sql = "select * from hero order by id desc limit ?,? ";

try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {

ps.setInt(1, start);

ps.setInt(2, count);

ResultSet rs = ps.executeQuery();

while (rs.next()) {

Hero hero = new Hero();

int id = rs.getInt(1);

String name = rs.getString(2);

float hp = rs.getFloat("hp");

int damage = rs.getInt(4);

hero.id = id;

hero.name = name;

hero.hp = hp;

hero.damage = damage;

heros.add(hero);

}

} catch (SQLException e) {

e.printStackTrace();

}

return heros;

}

}

總結(jié)

以上是生活随笔為你收集整理的java jdbc dao_Java自学-JDBC DAO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。