entity(实体层)
package cn.jbit.entity; import java.io.Serializable; public class BookManage implements Serializable { private int id;//id private String name;//图书名称 private String author;//图书作者 private String time;//购买时间 private String type;//图书分类 public BookManage() {}//无参构造方法 public BookManage(int id, String name, String author, String time, String type) {//有参构造方法 this.id = id; this.name = name; this.author = author; this.time = time; this.type = type; } public int getId() {//得到 id return id; } public void setId(int id) {//设置 id this.id = id; } public String getName() {//得到 图书名称 return name; } public void setName(String name) {//设置 图书名称 this.name = name; } public String getAuthor() {//得到 图书作者 return author; } public void setAuthor(String author) {//设置 图书作者 this.author = author; } public String getTime() {//得到 购买时间 return time; } public void setTime(String time) {//设置 购买时间 this.time = time; } public String getType() {//得到 图书分类 return type; } public void setType(String type) {//设置 图书分类 this.type = type; } }
dao(数据访问层)
package cn.jbit.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 数据库连接与关闭工具类。 */ public class BaseDao { private static String driver ="oracle.jdbc.driver.OracleDriver";// 数据库驱动字符串 private static String url = "jdbc:oracle:thin:@localhost:1521:oracle11";// 连接URL字符串 private static String user = "book"; // 数据库用户名 private static String password = "accp"; // 用户密码 /** * 获取数据库连接对象。 */ public Connection getConnection() { Connection conn = null;// 数据连接对象 // 获取连接并捕获异常 try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace();// 异常处理 } return conn;// 返回连接对象 } /** * 关闭数据库连接。 * @param conn 数据库连接 * @param stmt Statement对象 * @param rs 结果集 */ public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) { // 若结果集对象不为空,则关闭 if (rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } } // 若Statement对象不为空,则关闭 if (pstmt != null) { try { pstmt.close(); } catch (Exception e) { e.printStackTrace(); } } // 若数据库连接对象不为空,则关闭 if (conn != null) { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } /** * 执行更新、删除、插入SQL语句命令 * @param sql * @param pars * @return int */ public int executeUpdate(String sql, Object[] pars) { int rowCount =0; Connection conn = null; PreparedStatement pstmt = null; try { conn = this.getConnection(); pstmt = conn.prepareStatement(sql); if(pars!=null){ for(int i=0;i<pars.length;i++){ pstmt.setObject(i+1, pars[i]); } } rowCount = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally{ this.closeAll(conn, pstmt, null); } return rowCount; } }
package cn.jbit.dao; import java.util.List; import cn.jbit.entity.BookManage; public interface BookManageDao { /** * 查询一条数据 * @param id * @return BookManage */ public BookManage select(int id); /** * 查询所有数据 * @return List<BookManage> */ public List<BookManage> list(); /** * 添加一条数据 * @param item * @return int */ public int Add(BookManage item); /** * 删除一条数据 * @param id * @return int */ public int delete(int id); /** * 修改一条数据 * @param item * @return int */ public int update(BookManage item); }
package cn.jbit.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import cn.jbit.dao.BaseDao; import cn.jbit.dao.BookManageDao; import cn.jbit.entity.BookManage; //BookManageDaoImpl 继承 BaseDao 实现 BookManageDao public class BookManageDaoImpl extends BaseDao implements BookManageDao { Connection conn = null;//数据库连接 PreparedStatement pstmt = null;//数据库操作 ResultSet rs = null;//保存查询结果 //查询一条数据 public BookManage select(int id) { BookManage item = null;//声明 BookManage 对象,用来保存查询的数据 String sql = "select b_id, b_name, b_author, to_char(b_time,'yyyy-mm-dd'), b_type " + "from bookmanage where b_id=?";//编写预处理 SQL conn = this.getConnection();//使用父类的数据库连接 try { pstmt =conn.prepareStatement(sql);//实例化 PreparedStatement pstmt.setInt(1, id);//设置 “?”的内容,要使用 id 查询 rs = pstmt.executeQuery();//实例化 ResultSet 对象 if(rs.next()){//指针向下移动 item = new BookManage(//把查询到的内容保存到 BookManage 对象中 rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5) ); } } catch (SQLException e) { e.printStackTrace(); }finally{ //使用父类的关闭数据库连接,把所有都关闭 this.closeAll(conn, pstmt, rs); } //返回保存的数据的 BookManage 对象 return item; } //查询所有数据 public List<BookManage> list() { //使用泛型集合来保存一组数据,约束类型是 BookManage 类型 List<BookManage> list = new ArrayList<BookManage>(); BookManage item = null;//声明 BookManage 对象,用来一行行数据 //此处不需要设置任何内容 String sql ="select b_id, b_name, b_author, to_char(b_time,'yyyy-mm-dd'), b_type from bookmanage"; conn = this.getConnection();//使用父类的数据库连接 try { pstmt =conn.prepareStatement(sql);//实例化 PreparedStatement rs = pstmt.executeQuery();//实例化 ResultSet 对象 while(rs.next()){//指针向下移动 item = new BookManage(//装进 BookManage 对象中 rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5) ); list.add(item);//再添加到泛型集合 } } catch (SQLException e) { e.printStackTrace(); }finally{ //使用父类的关闭数据库连接,把所有都关闭 this.closeAll(conn, pstmt, rs); } //返回泛型集合,里面装着所有所有数据 return list; } //添加一条数据 public int Add(BookManage item) { //编写预处理 SQL String sql = "insert into BookManage (B_ID, B_NAME, B_AUTHOR, B_TIME, B_TYPE)" + "values (SEQ_BOOKMANAGE.Nextval,?,?, to_date(?, 'yyyy-mm-dd'), ?)"; return this.executeUpdate(sql, new Object[]{ item.getName(), item.getAuthor(), item.getTime(), item.getType() });//返回SQL语句和要添加的 Object 对象 } //删除一条数据 public int delete(int id) { //编写预处理 SQL String sql = "delete bookmanage where b_id = ?"; return this.executeUpdate(sql, new Object[]{id}); }//返回SQL语句根据 id 删除 //修改一条数据 public int update(BookManage item) { //编写预处理 SQL String sql = "update bookmanage" + " set b_name = ?," + " b_author = ?," + " b_time =to_date(?,'yyyy-mm-dd')," + " b_type =?" + " where b_id = ?"; return this.executeUpdate(sql, new Object[]{ item.getName(), item.getAuthor(), item.getTime(), item.getType(), item.getId() });//返回SQL语句和要修改的 Object 对象,根据 id 来修改 } }
相关推荐
在Java开发中,Entity(实体)和DAO(数据访问对象)层是常见的设计模式,用于构建数据驱动的应用程序。这两个层分别负责业务对象的定义和数据操作。在本主题中,我们将深入探讨如何通过自动化工具生成这些层,以...
2. **DAO层(数据访问层)**: DAO层是应用程序与数据库交互的桥梁,它的主要职责是执行SQL语句,对数据库进行增删改查操作。DAO层的设计应尽可能与业务逻辑分离,这样可以提高代码的可重用性和可测试性。在Java中...
这个".net 自动生成实体类、DAO工具"是一个实用的小型工具,能够帮助开发者快速构建数据访问层,从而节省手动编写代码的时间。 首先,让我们了解一下实体类(Entity Class)。实体类是对数据库表的面向对象表示,它...
这个工具的核心功能是自动根据数据库中的表结构生成对应的实体类(Entity)和数据访问对象(DAO)类。下面我们将深入探讨这个工具的相关知识点。 1. **实体类(Entity)**:在Java开发中,实体类通常用于表示数据库...
Java开发过程中,MyBatis是一个广泛使用的持久层框架,它能够简化数据库操作,但手动编写实体类(Entity)、数据访问对象(DAO)接口以及Mapper XML文件确实会占用大量的时间。针对这一问题,"java使用mybits自动...
3. **Entity**:实体类是对数据库表的映射,它们包含了数据库表中的字段,用于在业务层和数据层之间传递数据。 4. **Mapper**:在MyBatis框架中,Mapper接口定义了SQL查询和更新语句,实现了DAO层与SQL的绑定。...
DAO 是处理数据访问的接口,它定义了对数据库进行操作的方法。MyBatis 中的 DAO 实际上是 Mapper 接口,这个接口中的方法与 XML 映射文件中的 SQL 语句一一对应。 - Mapper 接口:定义了与数据库交互的操作,如增删...
2. **数据访问对象(DAO)**:DAO层是业务逻辑层和数据访问层之间的桥梁,主要用于实现对数据库的增删改查操作。通过DAO接口,开发者可以声明对数据库的操作,而具体的实现则可以通过Mapper接口和XML配置文件完成。...
在开发过程中,通过自动生成DAO(Data Access Object)和Entity(实体类)可以极大地提高开发效率,减少重复的手动编码工作。这个压缩包文件"mybatis_generate"很可能是为了简化MyBatis的代码生成流程而设计的工具。...
`dao`,数据访问对象,是业务逻辑层与数据访问层之间的桥梁。MBG会根据数据库表自动生成DAO接口,接口中包含了与Mapper.xml文件中的SQL相对应的方法。开发者可以通过实现这个接口来调用SQL,处理数据库操作。 使用...
这个"dao+实体的产生类"工具,通过IO流技术,能够自动生成DAO和实体类的.java源代码,帮助开发者快速构建数据访问层。 首先,DAO层的生成简化了数据库操作。DAO接口定义了对数据库的基本操作,如增删改查,而DAO...
在Java开发领域,尤其是使用SSM(Spring、SpringMVC、MyBatis)框架的项目中,编写实体类(Entity)和数据访问对象(DAO)层的代码是一项繁琐且重复的工作。然而,有了"mybatis实体类,DAO层逆向生成工具",这种困扰...
在C#编程中,"通用Dao层"是一个常见的设计模式,用于封装数据库操作,使得业务逻辑层能够专注于处理业务规则,而无需关心底层数据访问的细节。本篇将重点探讨如何利用C#的特性(Attribute)标签来实现这一目标,同时...
在IT行业中,DAO(Data Access Object)层是软件设计模式中的一个重要组成部分,它主要用于封装对数据库的操作,使得业务逻辑层与数据访问层解耦。"DAO层自动生成"这一技术旨在提高开发效率,减少手动编写重复代码的...
在IT行业中,数据库是存储和管理数据的核心组件,而实体类、XML映射文件以及DAO(Data Access Object)层则是应用程序与数据库交互的关键抽象层。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级...
通过自动生成DAO,我们可以快速得到与数据库表对应的Java接口和实现类,从而快速构建数据访问层。 接着,实体类(Entity Class)是数据库表的Java对象表示,它们通常包含了表中的字段及其属性,用于数据传输和持久...
在开发过程中,手动编写Entity(实体类)、DAO(数据访问对象)和Mapper(映射器)文件是一项繁琐的工作,而MyBatis Generator(MBG)就是解决这一问题的利器。MBG能够自动生成这些代码,极大地提高了开发效率。 ...
实体类是业务逻辑层和数据访问层之间数据传输的载体。 5. 表(Table): 这里的“table”指的是数据库中的表,比如用户表(Users)、角色表(Roles)等。这些表存储了应用中的关键数据,数据访问层通过SQL语句对...
在IT行业中,三层架构是一种常见的软件设计模式,它将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种架构模式有助于实现各...
泛型DAO层通过利用Java的泛型机制,提供了一种类型安全且高度可复用的数据访问接口。相比传统的DAO设计,泛型DAO层具有以下显著优势: 1. **类型安全性**:泛型允许开发者在编译时检查类型,避免了运行时的...