第一步数据库部分(MySQL):
DROP DATABASE IF EXISTS game; create database game DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; use game; create table products( game_id int primary key NOT NULL , game_name_cn varchar (100) NOT NULL , game_name_en varchar (100) NOT NULL , game_capacity int NOT NULL , game_version int NOT NULL , game_media int NOT NULL , game_copyright int NOT NULL , game_price decimal(10, 2) , game_content varchar (100) ) ENGINE=InnoDB;
第二部分:新建项目game
第三部分:新建目录结构(见相册),引入所需要的jar包(见相册)
第四部分:目基本搭建完毕,开始写项目代码
第五部分:在编码之前,我们需要先自行了解 strust,spring,hibernate 基础知识,后面的文章将不会过多的介绍这
些框架的基础知识。整个项目由 Dao,Services,Web 三层组成, Dao 层主要通过 hibernate 来操作数
据库, Service 层主要体现了业务,事务的处理, Web 层由 struts 来控制。整个项目的控制交由
spring 管理。
现在的这个小项目除了完成基本的添删改查,还有一个简单的分页功能。这个分页功能不仅前台分页,
而且在后台数据库也进行了分页处理。
第六部分:编写 Dao 层的代码
<? xml version="1.0" encoding="GB2312" ?> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > < hibernate-mapping > < class name ="com.game.products.model.Products" table ="products" > < id name ="gameId" type ="string" > < column name ="game_id" length ="5" /> < generator class ="assigned" /> </ id > < property name ="gameNameCn" type ="string" > < column name ="game_name_cn" length ="100" /> </ property > < property name ="gameNameEn" type ="string" > < column name ="game_name_en" length ="100" /> </ property > < property name ="gameCapacity" type ="string" > < column name ="game_capacity" length ="4" /> </ property > < property name ="gameVersion" type ="string" > < column name ="game_version" length ="4" /> </ property > < property name ="gameMedia" type ="string" > < column name ="game_media" length ="4" /> </ property > < property name ="gameCopyright" type ="string" > < column name ="game_copyright" length ="4" /> </ property > < property name ="gamePrice" type ="string" > < column name ="game_price" length ="4" /> </ property > < property name ="gameContent" type ="string" > < column name ="game_content" length ="100" /> </ property > </ class > </ hibernate-mapping >
package com.game.products.model; public class Products { // Fields private String gameId; // 编号 private String gameNameCn; // 中文名称 private String gameNameEn; // 英文名称 private String gameCapacity; // 碟数 private String gameVersion; // 版本 private String gameMedia; // 介质 private String gameCopyright; // 版权 private String gamePrice; // 价格 private String gameContent; // 攻略 // Constructors public Products() {} // Property accessors public String getGameCapacity() { return gameCapacity; } public void setGameCapacity(String gameCapacity) { this .gameCapacity = gameCapacity; } public String getGameId() { return gameId; } public void setGameId(String gameId) { this .gameId = gameId; } public String getGameNameCn() { return gameNameCn; } public void setGameNameCn(String gameNameCn) { this .gameNameCn = gameNameCn; } public String getGameNameEn() { return gameNameEn; } public void setGameNameEn(String gameNameEn) { this .gameNameEn = gameNameEn; } public String getGameVersion() { return gameVersion; } public void setGameVersion(String gameVersion) { this .gameVersion = gameVersion; } public String getGameMedia() { return gameMedia; } public void setGameMedia(String gameMedia) { this .gameMedia = gameMedia; } public String getGameCopyright() { return gameCopyright; } public void setGameCopyright(String gameCopyright) { this .gameCopyright = gameCopyright; } public String getGameContent() { return gameContent; } public void setGameContent(String gameContent) { this .gameContent = gameContent; } public String getGamePrice() { return gamePrice; } public void setGamePrice(String gamePrice) { this .gamePrice = gamePrice; } }
需要注意的是,我这里都是采用了 string 类型,因为在项目中传递数据,用 string 类型最为方便,同时
也便于代码的编写。只是在前台需要编写验证代码,免得有字符数据插入整数字段而造成数据库异常。
第八部分:在 com.game.products.dao.iface 包中新建ProductsDao接口。
package com.game.products.dao.iface; import java.util.List; import com.game.products.model.Products; public interface ProductsDao { List getProducts(); // 获得所有记录 List getProducts( int pageSize, int startRow); // 获得一段记录 int getRows(); // 获得总行数 int getRows(String fieldname,String value); // 获得总行数 List queryProducts(String fieldname,String value); // 根据条件查询的所有记录 List queryProducts(String fieldname,String value, int pageSize, int startRow); // 根据条件查询的一段记录 Products getProduct(String gameId); // 根据ID获得记录 String getMaxID(); // 获得最大ID值 void addProduct(Products pd); // 添加记录 void updateProductd(Products pd); // 修改记录 void deleteProduct(Products pd); // 删除记录 }
第七部分:注意这里的 ID 不是数据库自动生成的,而是根据需要由程序生成,一般项目中的主键 ID 都是采取这种方式。
然后在这个包中再新建 Products 类,代码如下:
首先写好 pojo 的代码: 在 com.game.products.model 中新建 products.hbm.xml 类,代码如下: