1 util 工具类
package net920vip.util;
import java.sql.*;
public class DBUtil {
Connection con;
PreparedStatement pstm;
ResultSet rs;
public Connection getCon() {
try {
Class.forName("com.mysql.jdbc.Driver");
String username = "root";
String password = "root";
String datebase = "student";
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + datebase + "?useUnicode=true&characterEncoding=utf-8", username, password);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
public void closeAll() {
try {
if (rs != null) {
rs.close();
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2 Bean工厂
package net920vip.Bean;
public class Student {
private int id;
private String username;
private String passoword;
public Student() {
}
public Student(String username, String passoword) {
this.username = username;
this.passoword = passoword;
}
public Student(int id, String username, String passoword) {
this.id = id;
this.username = username;
this.passoword = passoword;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassoword() {
return passoword;
}
public void setPassoword(String passoword) {
this.passoword = passoword;
}
@Override
public String toString() {
return "net920vip.Bean.Student{" +
"id=" + id +
", username='" + username + '\'' +
", passoword='" + passoword + '\'' +
'}';
}
}
3 Dao层设计
-
Dao 数据库和java的连接
-
专门对Student表的插入方法
如果按照下面这种方法设计,每个表都要写个Dao文件,就会特别麻烦,下篇文章,会对Dao层抽象设计,分离通用代码
package net920vip.Dao;
import net920vip.Bean.Student;
import net920vip.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StudentDao {
public int insert(Student s) throws SQLException {
DBUtil db = new DBUtil();
Connection con = db.getCon();
String sql = "insert into Student(username,password) values(?,?)";
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1, s.getUsername());
pstm.setString(2, s.getPassoword());
int i = pstm.executeUpdate();
return i;
}
public int update(Student s) throws SQLException {
DBUtil db = new DBUtil();
Connection con = db.getCon();
String sql = "update Student set username = ?, password = ? where id = ?";
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1, s.getUsername());
pstm.setString(2, s.getPassoword());
pstm.setInt(3, s.getId());
int i = pstm.executeUpdate();
db.closeAll();
return i;
}
public int del(int id) throws SQLException {
DBUtil db = new DBUtil();
Connection con = db.getCon();
String sql = "delete from Student where id = ?";
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setInt(1, id);
int i = pstm.executeUpdate();
db.closeAll();
return i;
}
public List queryByName(String inputName) throws SQLException {
ArrayList<Student> list = new ArrayList<Student>();
DBUtil db = new DBUtil();
Connection con = db.getCon();
String sql = "select * from Student where username like ?";
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1, "%" + inputName + "%");
ResultSet rs = pstm.executeQuery();
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;
}
public List queryAll() throws SQLException {
ArrayList<Student> list = new ArrayList<Student>();
DBUtil db = new DBUtil();
Connection con = db.getCon();
String sql = "select * from Student";
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
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;
}
}
4 测试
import net920vip.Bean.Student;
import net920vip.Dao.StudentDao;
import java.sql.SQLException;
public class SDaoTest {
public static void main(String[] args) throws SQLException {
StudentDao dao = new StudentDao();
Student s = new Student("tom", "abc");
dao.insert(s);
}
}
上篇文章:java jdbc连接数据库
下篇文章:java Dao层抽象化设计
<h2><a id="1_util__0"></a>1 util 工具类</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> net920vip.util;
<span class="hljs-keyword">import</span> java.sql.*;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">DBUtil</span> {
Connection con;
PreparedStatement pstm;
ResultSet rs;
<span class="hljs-keyword">public</span> Connection <span class="hljs-title function_">getCon</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">try</span> {
Class.forName(<span class="hljs-string">"com.mysql.jdbc.Driver"</span>);
<span class="hljs-type">String</span> <span class="hljs-variable">username</span> <span class="hljs-operator">=</span> <span class="hljs-string">"root"</span>;
<span class="hljs-type">String</span> <span class="hljs-variable">password</span> <span class="hljs-operator">=</span> <span class="hljs-string">"root"</span>;
<span class="hljs-type">String</span> <span class="hljs-variable">datebase</span> <span class="hljs-operator">=</span> <span class="hljs-string">"student"</span>;
con = DriverManager.getConnection(<span class="hljs-string">"jdbc:mysql://localhost:3306/"</span> + datebase + <span class="hljs-string">"?useUnicode=true&characterEncoding=utf-8"</span>, username, password);
} <span class="hljs-keyword">catch</span> (Exception e) {
e.printStackTrace();
}
<span class="hljs-keyword">return</span> con;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">closeAll</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">try</span> {
<span class="hljs-comment">// 做非空判断</span>
<span class="hljs-keyword">if</span> (rs != <span class="hljs-literal">null</span>) {
rs.close();
}
<span class="hljs-keyword">if</span> (pstm != <span class="hljs-literal">null</span>) {
pstm.close();
}
<span class="hljs-keyword">if</span> (con != <span class="hljs-literal">null</span>) {
con.close();
}
<span class="hljs-comment">// con.close();</span>
} <span class="hljs-keyword">catch</span> (SQLException e) {
e.printStackTrace();
}
}
}
</code></div></pre>
<h2><a id="2_Bean_49"></a>2 Bean工厂</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> net920vip.Bean;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">Student</span> {
<span class="hljs-keyword">private</span> <span class="hljs-type">int</span> id;
<span class="hljs-keyword">private</span> String username;
<span class="hljs-keyword">private</span> String passoword;
<span class="hljs-comment">// 无参构造</span>
<span class="hljs-keyword">public</span> <span class="hljs-title function_">Student</span><span class="hljs-params">()</span> {
}
<span class="hljs-comment">// 带参构造 两个参数</span>
<span class="hljs-keyword">public</span> <span class="hljs-title function_">Student</span><span class="hljs-params">(String username, String passoword)</span> {
<span class="hljs-built_in">this</span>.username = username;
<span class="hljs-built_in">this</span>.passoword = passoword;
}
<span class="hljs-comment">// 带参构造 三个参数</span>
<span class="hljs-keyword">public</span> <span class="hljs-title function_">Student</span><span class="hljs-params">(<span class="hljs-type">int</span> id, String username, String passoword)</span> {
<span class="hljs-built_in">this</span>.id = id;
<span class="hljs-built_in">this</span>.username = username;
<span class="hljs-built_in">this</span>.passoword = passoword;
}
<span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">getId</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">return</span> id;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">setId</span><span class="hljs-params">(<span class="hljs-type">int</span> id)</span> {
<span class="hljs-built_in">this</span>.id = id;
}
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">getUsername</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">return</span> username;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">setUsername</span><span class="hljs-params">(String username)</span> {
<span class="hljs-built_in">this</span>.username = username;
}
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">getPassoword</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">return</span> passoword;
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">setPassoword</span><span class="hljs-params">(String passoword)</span> {
<span class="hljs-built_in">this</span>.passoword = passoword;
}
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">toString</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">return</span> <span class="hljs-string">"net920vip.Bean.Student{"</span> +
<span class="hljs-string">"id="</span> + id +
<span class="hljs-string">", username='"</span> + username + <span class="hljs-string">'\''</span> +
<span class="hljs-string">", passoword='"</span> + passoword + <span class="hljs-string">'\''</span> +
<span class="hljs-string">'}'</span>;
}
}
</code></div></pre>
<h2><a id="3_Dao_111"></a>3 Dao层设计</h2>
<ul>
<li>
<p>Dao 数据库和java的连接</p>
</li>
<li>
<p>专门对Student表的插入方法</p>
</li>
</ul>
<p>如果按照下面这种方法设计,每个表都要写个Dao文件,就会特别麻烦,下篇文章,会对Dao层抽象设计,分离通用代码</p>
<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> 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-keyword">import</span> java.sql.SQLException;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.List;
<span class="hljs-comment">/**
* Dao 数据库和java的连接
* 专门对Student表的插入方法
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">StudentDao</span> {
<span class="hljs-comment">/**
* 新增学生
* 返回值:
* 1:修改成功
*/</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> SQLException {
<span class="hljs-type">DBUtil</span> <span class="hljs-variable">db</span> <span class="hljs-operator">=</span> <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">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"insert into Student(username,password) values(?,?)"</span>;
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
pstm.setString(<span class="hljs-number">1</span>, s.getUsername());
pstm.setString(<span class="hljs-number">2</span>, s.getPassoword());
<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> pstm.executeUpdate();
<span class="hljs-keyword">return</span> i;
}
<span class="hljs-comment">/**
* 修改学生
* 返回值:
* 1:修改成功
*/</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> SQLException {
<span class="hljs-type">DBUtil</span> <span class="hljs-variable">db</span> <span class="hljs-operator">=</span> <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">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"update Student set username = ?, password = ? where id = ?"</span>;
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
pstm.setString(<span class="hljs-number">1</span>, s.getUsername());
pstm.setString(<span class="hljs-number">2</span>, s.getPassoword());
pstm.setInt(<span class="hljs-number">3</span>, s.getId());
<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">/**
* 根据id删除学生
* 返回值:
* 1:删除成功
* 0:失败,(数据可能不存在)
*/</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> SQLException {
<span class="hljs-type">DBUtil</span> <span class="hljs-variable">db</span> <span class="hljs-operator">=</span> <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">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"delete from Student where id = ?"</span>;
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
pstm.setInt(<span class="hljs-number">1</span>, id);
<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">/**
* 根据用户名模糊查询
* 返回值:
* 1:删除成功
* 0:失败,(数据可能不存在)
*/</span>
<span class="hljs-keyword">public</span> List <span class="hljs-title function_">queryByName</span><span class="hljs-params">(String inputName)</span> <span class="hljs-keyword">throws</span> SQLException {
ArrayList<Student> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><Student>();
<span class="hljs-type">DBUtil</span> <span class="hljs-variable">db</span> <span class="hljs-operator">=</span> <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">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"select * from Student where username like ?"</span>;
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
pstm.setString(<span class="hljs-number">1</span>, <span class="hljs-string">"%"</span> + inputName + <span class="hljs-string">"%"</span>);
<span class="hljs-type">ResultSet</span> <span class="hljs-variable">rs</span> <span class="hljs-operator">=</span> pstm.executeQuery();
<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-comment">/**
* 查询所有学生信息
* 返回值:list
*/</span>
<span class="hljs-keyword">public</span> List <span class="hljs-title function_">queryAll</span><span class="hljs-params">()</span> <span class="hljs-keyword">throws</span> SQLException {
ArrayList<Student> list = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><Student>();
<span class="hljs-type">DBUtil</span> <span class="hljs-variable">db</span> <span class="hljs-operator">=</span> <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">String</span> <span class="hljs-variable">sql</span> <span class="hljs-operator">=</span> <span class="hljs-string">"select * from Student"</span>;
<span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstm</span> <span class="hljs-operator">=</span> con.prepareStatement(sql);
<span class="hljs-type">ResultSet</span> <span class="hljs-variable">rs</span> <span class="hljs-operator">=</span> pstm.executeQuery();
<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;
}
}
</code></div></pre>
<h2><a id="4__274"></a>4 测试</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">import</span> net920vip.Bean.Student;
<span class="hljs-keyword">import</span> net920vip.Dao.StudentDao;
<span class="hljs-keyword">import</span> java.sql.SQLException;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">SDaoTest</span> {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> SQLException {
<span class="hljs-comment">// 插入数据</span>
<span class="hljs-type">StudentDao</span> <span class="hljs-variable">dao</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">StudentDao</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>(<span class="hljs-string">"tom"</span>, <span class="hljs-string">"abc"</span>);
dao.insert(s);
<span class="hljs-comment">// 更新数据</span>
<span class="hljs-comment">// StudnetDao dao = new StudnetDao();</span>
<span class="hljs-comment">// Student s = new Student(1, "tom", "CC1");</span>
<span class="hljs-comment">// int i = dao.update(s);</span>
<span class="hljs-comment">// System.out.println(i);</span>
<span class="hljs-comment">// 删除数据</span>
<span class="hljs-comment">// StudnetDao dao = new StudnetDao();</span>
<span class="hljs-comment">// int i = dao.del(4);</span>
<span class="hljs-comment">// System.out.println(i);</span>
<span class="hljs-comment">// 查询所有用户信息</span>
<span class="hljs-comment">// StudnetDao dao = new StudnetDao();</span>
<span class="hljs-comment">// List<Student> list = dao.queryAll();</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// if (list != null) {</span>
<span class="hljs-comment">// for (int i = 0; i < list.size(); i++) {</span>
<span class="hljs-comment">// Student s = list.get(i);</span>
<span class="hljs-comment">// System.out.println("索引:" + (i + 1) + "用户名:" + s.getUsername() + "密码:" + s.getPassoword());</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">// 模糊查询</span>
<span class="hljs-comment">// System.out.println("请输入要查询的用户名");</span>
<span class="hljs-comment">// String inputName = "admin";</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// StudnetDao1 dao = new StudnetDao1();</span>
<span class="hljs-comment">// List<Student> list = dao.queryByName(inputName);</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// if (list != null) {</span>
<span class="hljs-comment">// for (int i = 0; i < list.size(); i++) {</span>
<span class="hljs-comment">// Student s = list.get(i);</span>
<span class="hljs-comment">// System.out.println("索引:" + (i + 1) + "用户名:" + s.getUsername() + "密码:" + s.getPassoword());</span>
<span class="hljs-comment">// }</span>
<span class="hljs-comment">// }</span>
}
}
</code></div></pre>
<p>上篇文章:<a href="https://www.920vip.net/article/76" target="_blank">java jdbc连接数据库</a></p>
<p>下篇文章:<a href="https://www.920vip.net/article/89" target="_blank">java Dao层抽象化设计</a></p>
留言