</pre>1、JDBC訪问方法</p><p></p><p>DBHelper类訪问数据库。Dao类写数据訪问,View类进行应用,初学实例图书管理系统。</p><p></p><pre class="java" name="code">package util;

import java.sql.Connection;
import java.sql.DriverManager; public class DBHelper {
private static Connection conn;
private static final String DBurl="jdbc:mysql://localhost:3306/db_book? useUnicode=true&characterEncoding=UTF-8";
private static final String DBuser="root";
private static final String DBpass="root";
private static final String DRIVER="com.mysql.jdbc.Driver"; static
{
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO 自己主动生成的 catch 块
e.printStackTrace();
}
} private DBHelper()
{ } public static Connection getConnection() throws Exception
{
if(conn==null)
{
conn=DriverManager.getConnection(DBurl, DBuser, DBpass);
}
return conn; }
public static void closeConn()throws Exception
{
if(conn!=null)
{
conn.close();
}
}
}
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import util.StrUtil;
import model.Book; public class BookDao { public int addBook(Connection conn,Book bk) throws Exception
{
String sql="insert into t_book values(null,?,?,?,?,?,?)";
PreparedStatement psmt=conn.prepareStatement(sql);
psmt.setString(1, bk.getBookname());
psmt.setString(2, bk.getAuthor());
psmt.setString(3, bk.getSex());
psmt.setString(4, bk.getPublisher());
psmt.setString(5, bk.getBookdes());
psmt.setInt(6, bk.getBooktypeid());
return psmt.executeUpdate();
} public int delBook(Connection conn,Book bk) throws Exception
{
String sql="delete from t_book where id ='"+bk.getId() +"'";
PreparedStatement psmt=conn.prepareStatement(sql);
return psmt.executeUpdate();
} public int bookModify(Connection con,Book bk)throws Exception{
String sql="update t_booktype set booktypename=?,booktypedes=? where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, bk.getBookname());
pstmt.setString(2, bk.getBookdes());
pstmt.setInt(3, bk.getId());
return pstmt.executeUpdate();
} public ResultSet bookList(Connection con,Book book)throws Exception{
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");
if(StrUtil.isNotEmpty(book.getBookname())){
sb.append(" and bookname like '%"+book.getBookname()+"%'");
}
if(StrUtil.isNotEmpty(book.getAuthor())){
sb.append(" and author like '%"+book.getAuthor()+"%'");
}
if(StrUtil.isNotEmpty(book.getSex())){
sb.append(" and sex = '"+book.getSex()+"'");
}
if(book.getBooktypeid()!=-1){
sb.append(" and booktypeid = "+book.getBooktypeid());
} PreparedStatement pstmt=con.prepareStatement(sb.toString());
return pstmt.executeQuery();
}
public ResultSet bookListAll(Connection con,Book book)throws Exception{
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");
PreparedStatement pstmt=con.prepareStatement(sb.toString());
return pstmt.executeQuery();
}
public boolean getBookByBookTypeId(Connection con,String bookTypeId)throws Exception{
String sql="select * from t_book where booktypeid=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, bookTypeId);
ResultSet rs=pstmt.executeQuery();
return rs.next();
}
}

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

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import util.DBHelper; interface RowMapImpl {
abstract Object rowMap(ResultSet rs) throws Exception; abstract List<Object> rowMapList(ResultSet rs) throws Exception;
} public class BaseDao implements RowMapImpl {
public Object query(String sql, Object[] args, RowMapImpl rowMapImpl)
throws Exception {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
conn = DBHelper.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++)
ps.setObject(i + 1, args[i]);
rs = ps.executeQuery();
Object obj = null;
if (rs.next()) {
obj = rowMapImpl.rowMap(rs);
}
return obj;
} public List<Object> queryList(String sql, Object[] args,
RowMapImpl rowMapImpl) throws Exception {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Object> list = null;
conn = DBHelper.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++)
ps.setObject(i + 1, args[i]);
rs = ps.executeQuery();
list = new ArrayList<Object>();
list = rowMapImpl.rowMapList(rs);
return list;
} public int operate(String sql, Object[] args) throws Exception {
Connection conn = null;
PreparedStatement ps = null;
conn = DBHelper.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++)
ps.setObject(i + 1, args[i]);
return ps.executeUpdate();
} @Override
public Object rowMap(ResultSet rs) throws Exception {
// TODO Auto-generated method stub
return null;
} @Override
public List<Object> rowMapList(ResultSet rs) throws Exception {
// TODO Auto-generated method stub
return null;
} }
package dao;

import java.sql.ResultSet;
import java.util.List; import model.Content; public class ContentDao {
private BaseDao template = new BaseDao();
public int addTree(Content cont) throws Exception {
String sql = "insert into t_content values(? ,?,?)";
Object[] args = new Object[] { cont.getNodeId(), cont.getContent(),
cont.getUpdateTime() };
return template.operate(sql, args);
} public int delTree(Content cont) throws Exception {
String sql = "delete from t_content where NodeId=?";
Object[] args = new Object[] { cont.getNodeId() };
return template.operate(sql, args);
} public int updateTree(Content cont) throws Exception {
String sql = "update t_content set NodeId=? , Content=? UpdateTime=? ";
Object[] args = new Object[] { cont.getNodeId(), cont.getContent(),
cont.getUpdateTime() };
return template.operate(sql, args);
} public Content findTree(String NodeId) throws Exception {
String sql = "select * from t_content where NodeId=? ";
Object[] args = new Object[] { NodeId };
Object cont = template.query(sql, args, new RowMapImpl() {
public Object rowMap(ResultSet rs) throws Exception {
Content cont = new Content();
cont.setNodeId(rs.getInt("NodeId"));
cont.setContent(rs.getString("Content"));
cont.setUpdateTime(rs.getString("UpdateTime"));
return cont;
} @Override
public List<Object> rowMapList(ResultSet rs) throws Exception {
// TODO 自己主动生成的方法存根
return null;
}
});
return (Content) cont;
}
}

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

package util;
import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class DBHelper { <p>
 private static SqlSessionFactory sessionFactory;
 private static Reader reader;
 private DBHelper(){}</p><p> public static SqlSessionFactory getSessionFactory() throws Exception{
  
  String resource = "util/config.xml";
  //载入mybatis的配置文件(它也载入关联的映射文件)
  try {
   reader = Resources.getResourceAsReader(resource);
  } catch (IOException e) {   
   e.printStackTrace();
  }
  //构建sqlSession的工厂
  sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  
  return sessionFactory;</p> }
<?xml version="1.0" encoding="UTF-8" ?

>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserDao">
<select id="getUser" parameterType="int"
resultType="User">
select * from t_user where id=#{id}
</select>
<select id="getAllUser" resultType="User">
select * from t_user
</select>
<delete id="deleteUser" parameterType="int" >
delete from t_user where id=#{id}
</delete>
<update id="updateUser" parameterType="User">
update t_user set username=#{username}, password=#{password} where id=#{id}
</update>
<insert id="insertUser" parameterType="User">
insert into t_user(username,password) values(#{username},#{password})
</insert> </mapper>
package dao;

import java.util.List;

import model.User;

public interface UserDao {

	public User getUser(int i);

	public List<User> getAllUser();

	public int insertUser(User u);

	public int updateUser(User u);

	public int deleteUser(int i);

}
public static void main(String[] args) throws Exception {
SqlSession session=DBHelper.getSessionFactory().openSession(true);
UserDao userDao=session.getMapper(UserDao.class);
User user=userDao.getUser(1);
System.out.println(user.getUsername());
}

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. W10如何开启LinuxBash及安装Ubuntu

    W10如何开启LinuxBash的功能 1)开启开发人员模式 2)启动部分windows功能 完成后重启系统 然后在cmd中输入bash按命令操作即可使用bash命令 3)下载安装ubuntu lxr ...

  2. git与github的连接流程

    https://blog.csdn.net/sssssuuuuu666/article/details/78565381 https://www.cnblogs.com/wzd5230/p/49064 ...

  3. 2015 Multi-University Training Contest 7 hdu 5372 Segment Game

    Segment Game Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. 2015 Multi-University Training Contest 6 hdu 5358 First One

    First One Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  5. DebugBar v7.0.2 注册码

    blog.sina.com.cn/seoerx 14d4fb95f89bdd277fff0d20910be400 seoerx.diandian.com 505dc8424062f9895c2dd14 ...

  6. Ruby学习笔记(一)

    在做实验的时候,由于每次都要手工修改文件夹的名字,实在是给自己添了太多的麻烦,为了摆脱手工修改的困恼,于是产生了一个使用程序批量修改文件夹名字的好主意.为了最终实现这个目标,自然需要选择一种合适的脚本 ...

  7. the process android.process.acore has stopped或the process com.phone。。。。

    模拟器一启动 The process android.process.acore has stopped unexpectedly 今天不知道怎么回事,模拟器一启动就狂报错, 模拟器已经重新安装过了, ...

  8. ES API 备忘

    本文所列的所有API在ElasticSearch文档是有详尽的说明,但它的结构组织的不太好. 这篇文章把ElasticSearch API用表格的形式供大家参考. https://www.iteblo ...

  9. WIN7使用VisualSVN建立SVN服务器

    使用SVN开发十分的方便,这样就不用每次都拷贝粘贴来备份了,网上看到一篇给自己的windows电脑安装SVN服务器的使用非常方便. 1.下载安装文件(服务器端和客户端) 服务器端采用VisualSVN ...

  10. SSIS获取Oracle数据库数据

    获取Oracle数据库步骤如下: 1.目标服务器获取连接Oracle数据库权限2.安装Oracle客户端,名称为win32_11gR2_client 安装管理员版本的.3.将配置文件tnsnames. ...