1. </pre>1、JDBC訪问方法</p><p></p><p>DBHelper类訪问数据库。Dao类写数据訪问,View类进行应用,初学实例图书管理系统。</p><p></p><pre class="java" name="code">package util;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5.  
  6. public class DBHelper {
  7. private static Connection conn;
  8. private static final String DBurl="jdbc:mysql://localhost:3306/db_book?
  9.  
  10. useUnicode=true&characterEncoding=UTF-8";
  11. private static final String DBuser="root";
  12. private static final String DBpass="root";
  13. private static final String DRIVER="com.mysql.jdbc.Driver";
  14.  
  15. static
  16. {
  17. try {
  18. Class.forName(DRIVER);
  19. } catch (ClassNotFoundException e) {
  20. // TODO 自己主动生成的 catch 块
  21. e.printStackTrace();
  22. }
  23. }
  24.  
  25. private DBHelper()
  26. {
  27.  
  28. }
  29.  
  30. public static Connection getConnection() throws Exception
  31. {
  32. if(conn==null)
  33. {
  34. conn=DriverManager.getConnection(DBurl, DBuser, DBpass);
  35. }
  36. return conn;
  37.  
  38. }
  39. public static void closeConn()throws Exception
  40. {
  41. if(conn!=null)
  42. {
  43. conn.close();
  44. }
  45. }
  46. }
  1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6.  
  7. import util.StrUtil;
  8. import model.Book;
  9.  
  10. public class BookDao {
  11.  
  12. public int addBook(Connection conn,Book bk) throws Exception
  13. {
  14. String sql="insert into t_book values(null,?,?,?,?,?,?)";
  15. PreparedStatement psmt=conn.prepareStatement(sql);
  16. psmt.setString(1, bk.getBookname());
  17. psmt.setString(2, bk.getAuthor());
  18. psmt.setString(3, bk.getSex());
  19. psmt.setString(4, bk.getPublisher());
  20. psmt.setString(5, bk.getBookdes());
  21. psmt.setInt(6, bk.getBooktypeid());
  22. return psmt.executeUpdate();
  23. }
  24.  
  25. public int delBook(Connection conn,Book bk) throws Exception
  26. {
  27. String sql="delete from t_book where id ='"+bk.getId() +"'";
  28. PreparedStatement psmt=conn.prepareStatement(sql);
  29. return psmt.executeUpdate();
  30. }
  31.  
  32. public int bookModify(Connection con,Book bk)throws Exception{
  33. String sql="update t_booktype set booktypename=?,booktypedes=?
  34.  
  35. where id=?";
  36. PreparedStatement pstmt=con.prepareStatement(sql);
  37. pstmt.setString(1, bk.getBookname());
  38. pstmt.setString(2, bk.getBookdes());
  39. pstmt.setInt(3, bk.getId());
  40. return pstmt.executeUpdate();
  41. }
  42.  
  43. public ResultSet bookList(Connection con,Book book)throws Exception{
  44. StringBuffer sb=new StringBuffer("SELECT t_book.id,t_book.bookname,t_book.author,t_book.sex,t_book.publisher,t_book.bookdes,t_booktype.booktypename FROM t_book,t_booktype WHERE t_book.booktypeid=t_booktype.id");
  45. if(StrUtil.isNotEmpty(book.getBookname())){
  46. sb.append(" and bookname like '%"+book.getBookname()+"%'");
  47. }
  48. if(StrUtil.isNotEmpty(book.getAuthor())){
  49. sb.append(" and author like '%"+book.getAuthor()+"%'");
  50. }
  51. if(StrUtil.isNotEmpty(book.getSex())){
  52. sb.append(" and sex = '"+book.getSex()+"'");
  53. }
  54. if(book.getBooktypeid()!=-1){
  55. sb.append(" and booktypeid = "+book.getBooktypeid());
  56. }
  57.  
  58. PreparedStatement pstmt=con.prepareStatement(sb.toString());
  59. return pstmt.executeQuery();
  60. }
  61. public ResultSet bookListAll(Connection con,Book book)throws Exception{
  62. StringBuffer sb=new StringBuffer("SELECT t_book.id,t_book.bookname,t_book.author,t_book.sex,t_book.publisher,t_book.bookdes,t_booktype.booktypename FROM t_book,t_booktype WHERE t_book.booktypeid=t_booktype.id");
  63. PreparedStatement pstmt=con.prepareStatement(sb.toString());
  64. return pstmt.executeQuery();
  65. }
  66. public boolean getBookByBookTypeId(Connection con,String bookTypeId)throws Exception{
  67. String sql="select * from t_book where booktypeid=?";
  68. PreparedStatement pstmt=con.prepareStatement(sql);
  69. pstmt.setString(1, bookTypeId);
  70. ResultSet rs=pstmt.executeQuery();
  71. return rs.next();
  72. }
  73. }

2、依旧是JDBC方法。Dao类採用简单模版方法   练手实例 源码管理系统

  1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. import util.DBHelper;
  10.  
  11. interface RowMapImpl {
  12. abstract Object rowMap(ResultSet rs) throws Exception;
  13.  
  14. abstract List<Object> rowMapList(ResultSet rs) throws Exception;
  15. }
  16.  
  17. public class BaseDao implements RowMapImpl {
  18. public Object query(String sql, Object[] args, RowMapImpl rowMapImpl)
  19. throws Exception {
  20. Connection conn = null;
  21. PreparedStatement ps = null;
  22. ResultSet rs = null;
  23. conn = DBHelper.getConnection();
  24. ps = conn.prepareStatement(sql);
  25. for (int i = 0; i < args.length; i++)
  26. ps.setObject(i + 1, args[i]);
  27. rs = ps.executeQuery();
  28. Object obj = null;
  29. if (rs.next()) {
  30. obj = rowMapImpl.rowMap(rs);
  31. }
  32. return obj;
  33. }
  34.  
  35. public List<Object> queryList(String sql, Object[] args,
  36. RowMapImpl rowMapImpl) throws Exception {
  37. Connection conn = null;
  38. PreparedStatement ps = null;
  39. ResultSet rs = null;
  40. List<Object> list = null;
  41. conn = DBHelper.getConnection();
  42. ps = conn.prepareStatement(sql);
  43. for (int i = 0; i < args.length; i++)
  44. ps.setObject(i + 1, args[i]);
  45. rs = ps.executeQuery();
  46. list = new ArrayList<Object>();
  47. list = rowMapImpl.rowMapList(rs);
  48. return list;
  49. }
  50.  
  51. public int operate(String sql, Object[] args) throws Exception {
  52. Connection conn = null;
  53. PreparedStatement ps = null;
  54. conn = DBHelper.getConnection();
  55. ps = conn.prepareStatement(sql);
  56. for (int i = 0; i < args.length; i++)
  57. ps.setObject(i + 1, args[i]);
  58. return ps.executeUpdate();
  59. }
  60.  
  61. @Override
  62. public Object rowMap(ResultSet rs) throws Exception {
  63. // TODO Auto-generated method stub
  64. return null;
  65. }
  66.  
  67. @Override
  68. public List<Object> rowMapList(ResultSet rs) throws Exception {
  69. // TODO Auto-generated method stub
  70. return null;
  71. }
  72.  
  73. }
  1. package dao;
  2.  
  3. import java.sql.ResultSet;
  4. import java.util.List;
  5.  
  6. import model.Content;
  7.  
  8. public class ContentDao {
  9. private BaseDao template = new BaseDao();
  10. public int addTree(Content cont) throws Exception {
  11. String sql = "insert into t_content values(?
  12.  
  13. ,?,?)";
  14. Object[] args = new Object[] { cont.getNodeId(), cont.getContent(),
  15. cont.getUpdateTime() };
  16. return template.operate(sql, args);
  17. }
  18.  
  19. public int delTree(Content cont) throws Exception {
  20. String sql = "delete from t_content where NodeId=?";
  21. Object[] args = new Object[] { cont.getNodeId() };
  22. return template.operate(sql, args);
  23. }
  24.  
  25. public int updateTree(Content cont) throws Exception {
  26. String sql = "update t_content set NodeId=?
  27.  
  28. , Content=? UpdateTime=? ";
  29. Object[] args = new Object[] { cont.getNodeId(), cont.getContent(),
  30. cont.getUpdateTime() };
  31. return template.operate(sql, args);
  32. }
  33.  
  34. public Content findTree(String NodeId) throws Exception {
  35. String sql = "select * from t_content where NodeId=?
  36.  
  37. ";
  38. Object[] args = new Object[] { NodeId };
  39. Object cont = template.query(sql, args, new RowMapImpl() {
  40. public Object rowMap(ResultSet rs) throws Exception {
  41. Content cont = new Content();
  42. cont.setNodeId(rs.getInt("NodeId"));
  43. cont.setContent(rs.getString("Content"));
  44. cont.setUpdateTime(rs.getString("UpdateTime"));
  45. return cont;
  46. }
  47.  
  48. @Override
  49. public List<Object> rowMapList(ResultSet rs) throws Exception {
  50. // TODO 自己主动生成的方法存根
  51. return null;
  52. }
  53. });
  54. return (Content) cont;
  55. }
  56. }

3、myBatis訪问  就是xml文件配置比較烦,用起来舒服些。  实例測试。

  1. package util;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4.  
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8.  
  9. public class DBHelper {
  10.  
  11. <p>
  12.  private static SqlSessionFactory sessionFactory;
  13.  private static Reader reader;
  14.  private DBHelper(){}</p><p> public static SqlSessionFactory getSessionFactory() throws Exception{
  15.   
  16.   String resource = "util/config.xml";
  17.   //载入mybatis的配置文件(它也载入关联的映射文件)
  18.   try {
  19.    reader = Resources.getResourceAsReader(resource);
  20.   } catch (IOException e) {   
  21.    e.printStackTrace();
  22.   }
  23.   //构建sqlSession的工厂
  24.   sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  25.   
  26.   return sessionFactory;</p>
  27.  
  28. }
  1. <?xml version="1.0" encoding="UTF-8" ?
  2.  
  3. >
  4. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="dao.UserDao">
  6. <select id="getUser" parameterType="int"
  7. resultType="User">
  8. select * from t_user where id=#{id}
  9. </select>
  10. <select id="getAllUser" resultType="User">
  11. select * from t_user
  12. </select>
  13. <delete id="deleteUser" parameterType="int" >
  14. delete from t_user where id=#{id}
  15. </delete>
  16. <update id="updateUser" parameterType="User">
  17. update t_user set username=#{username}, password=#{password} where id=#{id}
  18. </update>
  19. <insert id="insertUser" parameterType="User">
  20. insert into t_user(username,password) values(#{username},#{password})
  21. </insert>
  22.  
  23. </mapper>
  1. package dao;
  2.  
  3. import java.util.List;
  4.  
  5. import model.User;
  6.  
  7. public interface UserDao {
  8.  
  9. public User getUser(int i);
  10.  
  11. public List<User> getAllUser();
  12.  
  13. public int insertUser(User u);
  14.  
  15. public int updateUser(User u);
  16.  
  17. public int deleteUser(int i);
  18.  
  19. }
  1. public static void main(String[] args) throws Exception {
  2. SqlSession session=DBHelper.getSessionFactory().openSession(true);
  3. UserDao userDao=session.getMapper(UserDao.class);
  4. User user=userDao.getUser(1);
  5. System.out.println(user.getUsername());
  6. }

Java数据库訪问小结的更多相关文章

  1. 数据库訪问技术之JDBC

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhuojiajin/article/details/32150883     在了解JDBC之前呢, ...

  2. 学习实践:使用模式,原则实现一个C++数据库訪问类

    一.概述 在我參与的多个项目中.大家使用libMySQL操作MySQL数据库,并且是源代码级复用,在多个项目中同样或相似的源代码.这种复用方式给开发带来了不便. libMySQL的使用比較麻烦.非常e ...

  3. java后台訪问url连接——HttpClients

    java后台訪问url,并传递数据--通过httpclient方式 须要的包,包可能多几个额外的,假设无用或者冲突删除就可以.httpclient是使用的是4.4.1的版本号:http://downl ...

  4. 假设在本地搭一个server和mysql数据库环境,假设使用java来訪问数据库

    我们能够使用speedamp来搭一个server环境,能够在http://download.csdn.net/detail/baidu_nod/7630265下载 解压后无需安装直接能够使用.点击Sp ...

  5. java中訪问修饰符

    较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 ...

  6. c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010512579/article/details/24011761 在封装通用 SQLSERVER ...

  7. Java 訪问权限控制:你真的了解 protected keyword吗?

    摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...

  8. JAVA设计模式之 訪问者模式【Visitor Pattern】

    一.概述 訪问者模式是一种较为复杂的行为型设计模式,它包括訪问者和被訪问元素两个主要组成部分.这些被訪问的元素通常具有不同的类型,且不同的訪问者能够对它们进行不同的訪问操作.在使用訪问者模式时,被訪问 ...

  9. 使用ADO.NET对SQL Server数据库进行訪问

    在上一篇博客中我们给大家简介了一下VB.NET语言的一些情况,至于理论知识的学习我们能够利用VB的知识体系为基础.再将面向对象程序设计语言的知识进行融合便可进行编程实战. 假设我们须要訪问一个企业关系 ...

随机推荐

  1. 变量命名规范及str类型

    变量命名规范: 1.单词之间用_分开 add_num() 2.全局变量,大写 PI,NUMBER() 3.实例变量,以_开头 _example() 4.私有实例变量 __private() 5.普通函 ...

  2. 【henuacm2016级暑期训练-动态规划专题 C】Little Girl and Maximum XOR

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑r最后的二进制形式为 1xxxxx 那么我们肯定想让第一个最高位的1保留. 因此我们选取的另外一个数字 一定是 0xxxxx的形 ...

  3. 【codeforces 738E】Subordinates

    [题目链接]:http://codeforces.com/problemset/problem/738/E [题意] 给你一个类似树形的关系; 然后告诉你某个人头顶上有多少个上司numi; 只有fat ...

  4. maven规定的目录

    Maven规定的目录结构 若要使用Maven,那么项目的目录结构必须符合Maven的规范 ,如写一个使用Spring的Web项目就需要引入大量的jar包.一个项目Jar包的数量之多往往让我们瞠目结舌, ...

  5. shell如何更改当前工作路径

    转载: http://imysqldba.blog.51cto.com/1222376/616805 shell 脚本执行有三种方法 bash 脚本名 sh 脚本名 chmod +x 脚本名 使用下面 ...

  6. 单片机: EEPROM和串口通信

    名称:IIC协议 EEPROM24c02 通过串口通信存数读取数据 内容:此程序用于检測EEPROM性能,測试方法例如以下:写入24c02一个数据,然后在内存中改变这些数据. 掉电后主内存将失去这些信 ...

  7. org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files (x86)\Java\jdk1.7.0_7

    32为的androidstudio: build.gradle: dexOptions { javaMaxHeapSize "1g"}

  8. VBA 第一天

    公司实习第一天,excel搞不定啊,学点VBA留着用: 录制宏: 点击录制宏按钮以后,在这段期间你做的每一个操作都会被记录下来,直到你点击停止录制按钮才能够停下,停下来后在此期间每一个操作都会以宏代码 ...

  9. xBIM 基础15 IFC导出Excel报表

    系列目录    [已更新最新开发文章,点击查看详细]  IFC导出Excel空间报表文件 本篇将向您展示从IFC文件读取数据所需的一些概念.它使用IFC4接口,适用于IFC2x3和IFC4型号.要创建 ...

  10. POJ 1948 DP

    题意:给你n个木棍(n<=40)每个木棍长度<=40,问用上所有的木棍拼成的三角形的面积的最大值,并输出面积*100的值(不四舍五入) 如果没有解,输出-1. 思路: 背包判断可达性. f ...