介绍
本机主要都上期文章Dao进行升级,分为了下面三类文件:
-
BaseDao:通用的dao层方法
-
IStudentDao:接口编程
-
StudentDao:实际开发Dao层
上期文章:https://www.920vip.net/article/84
1 BaseDao
package net920vip.Dao;
import net920vip.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BaseDao {
DBUtil db;
public int update(String sql, Object... o) throws Exception {
db = new DBUtil();
Connection con = db.getCon();
PreparedStatement pstm = con.prepareStatement(sql);
if(o!=null){
for (int i=0;i<o.length;i++){
pstm.setObject((i+1),o[i]);
}
}
int i = pstm.executeUpdate();
db.closeAll();
return i;
}
public ResultSet query(String sql, Object... o)throws Exception{
db = new DBUtil();
Connection con = db.getCon();
PreparedStatement pstm = con.prepareStatement(sql);
if(o!=null){
for (int i=0;i<o.length;i++){
pstm.setObject((i+1),o[i]);
}
}
ResultSet rs = pstm.executeQuery();
return rs;
}
}
2 IStudentDao
package net920vip.Dao;
import net920vip.Bean.Student;
import java.util.List;
public interface IStudentDao {
public int insert(Student s) throws Exception;
// 删除
public int del(int id) throws Exception;
// 修改
public int update(Student s) throws Exception;
// 查询所有学生
public List<Student> queryAll() throws Exception;
// 根据姓名模糊查询
public List<Student> queryByName(String inputName) throws Exception;
}
3 StudentDao
package net920vip.Dao;
import net920vip.Bean.Student;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class StudentDao extends BaseDao implements IStudentDao {
@Override
public int insert(Student s) throws Exception {
return super.update("insert into Student(username,password) values(?,?)", s.getUsername(), s.getPassoword());
}
@Override
public int del(int id) throws Exception {
return super.update("delete from Student where id = ?", id);
}
@Override
public int update(Student s) throws Exception {
return super.update("update Student set username = ?, password = ? where id = ?", s.getUsername(), s.getPassoword(), s.getId());
}
@Override
public List<Student> queryAll() throws Exception {
ArrayList<Student> list = new ArrayList<Student>();
ResultSet rs = super.query("select * from Student", null);
while (rs.next()) {
int id = rs.getInt(1);
String username = rs.getString(2);
String password = rs.getString(3);
Student s = new Student(id, username, password);
list.add(s);
}
db.closeAll();
return list;
}
@Override
public List<Student> queryByName(String inputName) throws Exception {
return null;
}
}
<h2><a id="_0"></a>介绍</h2>
<p>本机主要都上期文章Dao进行升级,分为了下面三类文件:</p>
<ul>
<li>
<p>BaseDao:通用的dao层方法</p>
</li>
<li>
<p>IStudentDao:接口编程</p>
</li>
<li>
<p>StudentDao:实际开发Dao层</p>
</li>
</ul>
<p>上期文章:<a href="https://www.920vip.net/article/84" target="_blank">https://www.920vip.net/article/84</a></p>
<h2><a id="1_BaseDao_12"></a>1 BaseDao</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> net920vip.Dao;
<span class="hljs-keyword">import</span> net920vip.util.DBUtil;
<span class="hljs-keyword">import</span> java.sql.Connection;
<span class="hljs-keyword">import</span> java.sql.PreparedStatement;
<span class="hljs-keyword">import</span> java.sql.ResultSet;
<span class="hljs-comment">/**
* 通用的dao层方法
* */</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">BaseDao</span> {
DBUtil db;
<span class="hljs-comment">/**
* 通用的增删改
* */</span>
<span class="hljs-comment">// public int update(String sql, Object[] o) throws Exception {</span>
<span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">update</span><span class="hljs-params">(String sql, Object... o)</span> <span class="hljs-keyword">throws</span> Exception {
db = <span class="hljs-keyword">new</span> <span class="hljs-title class_">DBUtil</span>();
<span class="hljs-type">Connection</span> <span class="hljs-variable">con</span> <span class="hljs-operator">=</span> db.getCon();
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
<span class="hljs-keyword">if</span>(o!=<span class="hljs-literal">null</span>){
<span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> i=<span class="hljs-number">0</span>;i<o.length;i++){
pstm.setObject((i+<span class="hljs-number">1</span>),o[i]);
}
}
<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> pstm.executeUpdate();
db.closeAll();
<span class="hljs-keyword">return</span> i;
}
<span class="hljs-comment">/**
* 通用的查询
* */</span>
<span class="hljs-keyword">public</span> ResultSet <span class="hljs-title function_">query</span><span class="hljs-params">(String sql, Object... o)</span><span class="hljs-keyword">throws</span> Exception{
db = <span class="hljs-keyword">new</span> <span class="hljs-title class_">DBUtil</span>();
<span class="hljs-type">Connection</span> <span class="hljs-variable">con</span> <span class="hljs-operator">=</span> db.getCon();
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
<span class="hljs-keyword">if</span>(o!=<span class="hljs-literal">null</span>){
<span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> i=<span class="hljs-number">0</span>;i<o.length;i++){
pstm.setObject((i+<span class="hljs-number">1</span>),o[i]);
}
}
<span class="hljs-type">ResultSet</span> <span class="hljs-variable">rs</span> <span class="hljs-operator">=</span> pstm.executeQuery();
<span class="hljs-comment">// 此处不能关数据库</span>
<span class="hljs-keyword">return</span> rs;
}
}
</code></div></pre>
<h2><a id="2_IStudentDao_76"></a>2 IStudentDao</h2>
<pre><code class="lang-">package net920vip.Dao;
import net920vip.Bean.Student;
import java.util.List;
public interface IStudentDao {
public int insert(Student s) throws Exception;
// 删除
public int del(int id) throws Exception;
// 修改
public int update(Student s) throws Exception;
// 查询所有学生
public List<Student> queryAll() throws Exception;
// 根据姓名模糊查询
public List<Student> queryByName(String inputName) throws Exception;
}
</code></pre>
<h2><a id="3_StudentDao_99"></a>3 StudentDao</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> net920vip.Dao;
<span class="hljs-keyword">import</span> net920vip.Bean.Student;
<span class="hljs-keyword">import</span> java.sql.ResultSet;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentDao</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">BaseDao</span> <span class="hljs-keyword">implements</span> <span class="hljs-title class_">IStudentDao</span> {
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">insert</span><span class="hljs-params">(Student s)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-comment">// String sql = "insert into Student(username,password) values(?,?)";</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// // 新建一个数组</span>
<span class="hljs-comment">// Object[] o = new Object[2];</span>
<span class="hljs-comment">// o[0] = s.getUsername();</span>
<span class="hljs-comment">// o[1] = s.getPassoword();</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// // 调用父类方法</span>
<span class="hljs-comment">// int i = super.update(sql, o);</span>
<span class="hljs-comment">// return i;</span>
<span class="hljs-comment">// 方法2</span>
<span class="hljs-comment">// 方法3</span>
<span class="hljs-keyword">return</span> <span class="hljs-built_in">super</span>.update(<span class="hljs-string">"insert into Student(username,password) values(?,?)"</span>, s.getUsername(), s.getPassoword());
}
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">del</span><span class="hljs-params">(<span class="hljs-type">int</span> id)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-keyword">return</span> <span class="hljs-built_in">super</span>.update(<span class="hljs-string">"delete from Student where id = ?"</span>, id);
}
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">update</span><span class="hljs-params">(Student s)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-keyword">return</span> <span class="hljs-built_in">super</span>.update(<span class="hljs-string">"update Student set username = ?, password = ? where id = ?"</span>, s.getUsername(), s.getPassoword(), s.getId());
}
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> List<Student> <span class="hljs-title function_">queryAll</span><span class="hljs-params">()</span> <span class="hljs-keyword">throws</span> Exception {
ArrayList<Student> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><Student>();
<span class="hljs-type">ResultSet</span> <span class="hljs-variable">rs</span> <span class="hljs-operator">=</span> <span class="hljs-built_in">super</span>.query(<span class="hljs-string">"select * from Student"</span>, <span class="hljs-literal">null</span>);
<span class="hljs-keyword">while</span> (rs.next()) {
<span class="hljs-comment">// 取出每一行中的每一列的数据</span>
<span class="hljs-type">int</span> <span class="hljs-variable">id</span> <span class="hljs-operator">=</span> rs.getInt(<span class="hljs-number">1</span>);
<span class="hljs-type">String</span> <span class="hljs-variable">username</span> <span class="hljs-operator">=</span> rs.getString(<span class="hljs-number">2</span>);
<span class="hljs-type">String</span> <span class="hljs-variable">password</span> <span class="hljs-operator">=</span> rs.getString(<span class="hljs-number">3</span>);
<span class="hljs-comment">// 将数据封装到Studnet对象里</span>
<span class="hljs-type">Student</span> <span class="hljs-variable">s</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Student</span>(id, username, password);
<span class="hljs-comment">// 分别将每一个studnet对象,添加到list集合中</span>
list.add(s);
}
db.closeAll();
<span class="hljs-keyword">return</span> list;
}
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> List<Student> <span class="hljs-title function_">queryByName</span><span class="hljs-params">(String inputName)</span> <span class="hljs-keyword">throws</span> Exception {
<span class="hljs-keyword">return</span> <span class="hljs-literal">null</span>;
}
}
</code></div></pre>
留言