以下是jdbc的封装
package com.cyws.util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DB {
private Connection con;
private PreparedStatement pstm;
private static String user;
private static String password;
private static String url;
private static String dbDriver;
/** 获取数据库的各个值 */
static{
Properties pros = new Properties();
try {
pros.load(DB.class.getResourceAsStream("db.properties"));
user = pros.getProperty("username");
password = pros.getProperty("password");
url = pros.getProperty("url");
dbDriver = pros.getProperty("dbDriver");
} catch (IOException e1) {
e1.printStackTrace();
}
try {
Class.forName(dbDriver);
} catch (ClassNotFoundException e) {}
}
/** 构造方法,在该方法中加载数据库驱动 */
public DB(){
try{
Class.forName(dbDriver);
}catch(ClassNotFoundException e){
System.out.println("加载数据库驱动失败!");
e.printStackTrace();
}
}
/**创建数据库连接*/
public Connection getCon(){
if(con==null){
try {
con=DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
} catch (SQLException e) {
System.out.println("创建数据库连接失败!");
con=null;
e.printStackTrace();
}
}
return con;
}
/**
*@功能:对数据库进行增、删、改、查操作
*@参数:sql为SQL语句;params为Object数组,里面存储的是为sql表示的SQL语句中"?"占位符赋值的数据
*/
public void doPstm(String sql,Object[] params){
if(sql!=null&&!sql.equals("")){
if(params==null)
params=new Object[0];
this.getCon();
if(con!=null){
try{
System.out.println(sql);
pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
pstm.execute();
}catch(SQLException e){
System.out.println("doPstm()方法出错!");
e.printStackTrace();
}
}
}
}
/**
* @功能:获取调用doPstm()方法执行查询操作后返回的ResultSet结果集
* @返回值:ResultSet
* @throws SQLException
*/
public ResultSet getRs() throws SQLException{
return pstm.getResultSet();
}
/**
* @功能:获取调用doPstm()方法执行更新操作后返回影响的记录数
* @返回值:int
* @throws SQLException
*/
public int getCount() throws SQLException{
return pstm.getUpdateCount();
}
/**
* @功能:释放PrepareStatement对象与Connection对象
*/
public void closed(){
try{
if(pstm!=null)
pstm.close();
}catch(SQLException e){
System.out.println("关闭pstm对象失败!");
e.printStackTrace();
}
try{
if(con!=null){
con.close();
}
}catch(SQLException e){
System.out.println("关闭con对象失败!");
e.printStackTrace();
}
}
public static void main(String args[])
{
new DB().getCon();
}
}
以下是我们的dao层
package com.cyws.dao;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.cyws.util.DB;
import com.cyws.util.Page;
import com.cyws.util.QueryResult;
public class BaseDaoSuport<T>{
private DB mydb = null;
private static BaseDaoSuport baseDaoSuport = null;
static{
if(baseDaoSuport==null){
baseDaoSuport = new BaseDaoSuport();
}
}
public BaseDaoSuport() {
mydb = new DB();
}
public static BaseDaoSuport getInstence(){
return baseDaoSuport;
}
public boolean addT(String sql,Object[] params) {
try {
mydb.doPstm(sql, params);
return true;
} catch (Exception e) {
return false;
}
}
public boolean delT(int id,String sql) {
Object[] params = { id };
try {
mydb.doPstm(sql, params);
return true;
} catch (Exception e) {
return false;
}
}
public ResultSet findByProperty(Object[] params,String sql) {
ResultSet rs = null;
try {
mydb.doPstm(sql, params);
rs = mydb.getRs();
} catch (Exception e) {
e.printStackTrace();
System.out.println("查询出错");
}
return rs;
}
public List findTList(String sql,String countsql,int page) {
List list = new ArrayList();
QueryResult<T> queryResult = null;
int d = this.getCount(countsql);
System.out.println(d);
Page pageUtil = new Page(d, page);
ResultSet rs = null;
try {
Object[] params = { Page.maxResult * (page - 1), Page.maxResult };
mydb.doPstm(sql, params);
rs = mydb.getRs();
System.out.println(rs);
queryResult = new QueryResult<T>();
queryResult.setPage(pageUtil);
} catch (Exception e) {
e.printStackTrace();
}
list.add(queryResult);
list.add(rs);
return list;
}
/**
* 得到集合数据
*/
public ResultSet getList(String sql,Object[] params) {
ResultSet rs = null;
try {
mydb.doPstm(sql, params);
rs = mydb.getRs();
System.out.println(rs);
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
private int getCount(String countsql) {
int temp = 0;
try {
mydb.doPstm(countsql,null);
ResultSet rs = mydb.getRs();
while (rs.next()) {
temp++;
}
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
public boolean modifyT(String sql,Object[] params) {
try {
mydb.doPstm(sql, params);
return true;
} catch (Exception e) {
return false;
}
}
}
分享到:
相关推荐
在模型层,数据访问对象(DAO)是与数据库交互的接口,负责执行CRUD(创建、读取、更新、删除)操作。Java提供了JDBC API来连接和操作数据库,但为了减少重复代码和提高代码质量,通常会使用ORM(对象关系映射)框架...
这个压缩包文件"**Mybatis_dao.rar_mybatis_dao_mybatis_dao.rar**"包含了实现这个集成项目的相关资源,特别是DAO(数据访问对象)部分,这是业务逻辑与数据库交互的关键组件。 首先,让我们深入了解一下Mybatis。...
本文将深入探讨如何使用jsp-servlet-service-dao四层架构来实现这样的系统,包括用户信息的增删改查功能,以及权限控制机制。 首先,让我们理解这四层架构的每一层: 1. **JSP(JavaServer Pages)**:JSP是Java ...
MYBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3. **Spring MVC与MYBatis集成** 在企业应用中,Spring MVC与MYBatis的...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。在后台管理系统中,MyBatis提供了一种灵活的数据库操作方式,使数据访问层...
《图书管理系统MVC版本》是基于Java EE(J2EE)平台开发的一个经典项目,它采用了Model-View-Controller(MVC)设计模式,旨在帮助我们深入理解和实践Web应用程序的开发流程。MVC模式是一种软件架构模式,它将应用...
这需要实现后台逻辑来处理这些操作,例如,使用JavaBean来封装管理员对象,然后通过DAO(Data Access Object)层来与数据库交互。管理员也可以对用户信息进行管理,如禁用或启用账户,修改用户角色等。 4. **用户...
标题中的“后端SSM前端bootstrap数据库mysql”指的是一个基于Java Web开发的项目,使用了Spring、Spring MVC和MyBatis(简称SSM)作为后端框架,Bootstrap作为前端UI库,以及MySQL作为数据存储系统。这样的组合是...
在Spring MVC应用中,通常使用Spring Data JPA或MyBatis等持久层框架来操作数据库。这些框架简化了SQL的编写,提供了ORM(对象关系映射)功能,使得Java对象可以直接与数据库记录对应。 **Spring MVC 实现** ...
通过这个项目,开发者可以学习到如何设置Spring MVC的环境,如何配置和使用Spring MVC的注解,如何编写控制器,以及如何整合JakartaEE的其他服务,如JPA进行数据库操作。此外,还会涉及到Maven的使用,以及如何通过...
在JavaWeb网上银行系统中,通常会使用JDBC(Java Database Connectivity)进行数据库操作,但为了简化数据库访问,开发者可能会选择使用ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis。这些框架提供...
Java中的实体类(Entity)和数据访问对象(DAO)通常用于实现模型层。 - **视图(View)**:视图负责展示数据,通常与用户界面直接关联。在本系统中,视图可能包括教室列表、教室详情、预约情况等界面,用于向用户...
在这个系统中,可能有专门的数据访问对象(DAO)类来封装对数据库的操作,以及实体类(Entity)来代表电影、用户、评论等业务对象。 2. **View(视图)**:视图层是用户看到和交互的部分,主要负责展示数据。在这个...
MyBatis 使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis 的主要优点在于其灵活性,开发者可以完全控制SQL的编写,从而实现...
4. **整合使用**:Spring、Spring MVC 和 MyBatis 的整合使用,通常会利用Spring的IoC容器来管理MyBatis的SqlSessionFactory和SqlSession,以及Service层和DAO层的bean。Spring MVC负责接收和响应HTTP请求,Service...
MyBatis通过XML或注解方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 "Spring+MyBatis企业应用实战2"这个项目可能包含以下几个方面的内容: 1. **...
Spring-MVC通过DispatcherServlet进行中央调度,使用ModelAndView对象封装模型数据和视图信息,实现了松耦合的MVC设计模式。 四、Maven Maven是Apache基金会开发的项目管理工具,它通过项目对象模型(POM)文件来...
MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 6. **集成 Spring MVC 和 MyBatis** Spring MVC 可以与 ...