Java数据库訪问小结
</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数据库訪问小结的更多相关文章
- 数据库訪问技术之JDBC
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhuojiajin/article/details/32150883 在了解JDBC之前呢, ...
- 学习实践:使用模式,原则实现一个C++数据库訪问类
一.概述 在我參与的多个项目中.大家使用libMySQL操作MySQL数据库,并且是源代码级复用,在多个项目中同样或相似的源代码.这种复用方式给开发带来了不便. libMySQL的使用比較麻烦.非常e ...
- java后台訪问url连接——HttpClients
java后台訪问url,并传递数据--通过httpclient方式 须要的包,包可能多几个额外的,假设无用或者冲突删除就可以.httpclient是使用的是4.4.1的版本号:http://downl ...
- 假设在本地搭一个server和mysql数据库环境,假设使用java来訪问数据库
我们能够使用speedamp来搭一个server环境,能够在http://download.csdn.net/detail/baidu_nod/7630265下载 解压后无需安装直接能够使用.点击Sp ...
- java中訪问修饰符
较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 ...
- c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010512579/article/details/24011761 在封装通用 SQLSERVER ...
- Java 訪问权限控制:你真的了解 protected keyword吗?
摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...
- JAVA设计模式之 訪问者模式【Visitor Pattern】
一.概述 訪问者模式是一种较为复杂的行为型设计模式,它包括訪问者和被訪问元素两个主要组成部分.这些被訪问的元素通常具有不同的类型,且不同的訪问者能够对它们进行不同的訪问操作.在使用訪问者模式时,被訪问 ...
- 使用ADO.NET对SQL Server数据库进行訪问
在上一篇博客中我们给大家简介了一下VB.NET语言的一些情况,至于理论知识的学习我们能够利用VB的知识体系为基础.再将面向对象程序设计语言的知识进行融合便可进行编程实战. 假设我们须要訪问一个企业关系 ...
随机推荐
- 小学生都能学会的python(编码 and 字符串)
小学生都能学会的python(编码 and 字符串) 一,编码 最早的计算机编码是ASCII. 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII ...
- luogu 1865 数论 线性素数筛法
洛谷 1865 数论 线性素数筛法 最基本的线性素数筛法,当做复习欧拉筛法了,没有尝试过使用更暴力的筛法... WA了一次,手抖没打\n 传送门 (https://www.luogu.org/prob ...
- WinServer-IIS-SEO优化
来自为知笔记(Wiz)
- HDU 4828
其实..这题是<组合数学>的习题中的一道......当初不会..... 想到一个证明: 填入2n个数,把填在上方的数的位置填上+1,下方的填上-1.这样,在序列1....2n的位置,任意前 ...
- magento megatron主题加入中文
magento的megatron默认不支持中文,全部我们须要在它的本地化目录中加入中文的cvs文件,加入方法例如以下: 1.切换至 app ▸ design ▸ frontend ▸ megatron ...
- 怎样更好的深入学习andorid
把主要的控件 基本布局 基本组件 数据存储都熟悉一边,在看网络的时候,有点不知道怎么搞了.由于一直用c开发,但接触socket也不多,这两天把java的socket编程熟悉了下.找了非常多书,可是 ...
- 苹果要求全部新app以及版本号更新必须支持iOS 8 SDK和64-bit
2014年10月20日.苹果官方公布了一则新闻,新闻内容例如以下: Starting February 1, 2015, new iOS apps uploaded to the App Store ...
- 好莱坞原则—Spring的IOC容器
IOC容器的概念,之前在学习SSH的时候,就有接触过.但那时候也仅仅是知道这么个概念,认为它非常难理解.事实上并非它难理解,而是我并没有停下来好好对它总结梳理过. IOC(Inversion of C ...
- bzoj1202: [HNOI2005]狡猾的商人(差分约束)
1202: [HNOI2005]狡猾的商人 题目:传送门 题解: 据说是带权并查集!蒟蒻不会啊!!! 可是听说lxj大佬用差分约束A了,于是开始一通乱搞. 设s[i]为前i个月的总收益,那么很容易就可 ...
- m_Orchestrate learning system---八、下拉列表(select标签)如何实现链接功能
m_Orchestrate learning system---八.下拉列表(select标签)如何实现链接功能 一.总结 一句话总结:option的值就是链接地址,选择事件为指向选中的option的 ...