Eclipse+Spring从头学到脚之6-入门篇C

随着内容的不断深入,已经学了不少springframework的相关知识了,

也许大家都在想,为什么还没有开始和数据库相关的部分?

呵呵~~,今天我们就开始把数据库的部分

这里,依据spring的官方教材,我们采用的是HSQL数据库,
这是一个用java来编写的开源的数据库。

在springframework里面使用HSQL非常方便,只需把jar文件包拷贝一下即可,方法如下:
把D:/StudySpring/spring-framework-2.5.5/lib/hsqldb/hsqldb.jar拷贝到
WebContent/WEB-INF/lib/下面。

关于,HSQL的使用,这里我们是以standalone server 模式来启用的。

另,HSQL更多的内容,请参照相关网站,这里就不多说了。

首先,在spring001下面建一个“db”的文件夹,用来存放和db文件和脚本程序。

建好db文件夹后,在下面创建一个server. bat的脚本程序,用来启动并创建数据库,数据库的名字是spring001,创建的时候,也许会弹出下面的警告框,请忽视,不会影响后面的步骤。

6-1

6-2

 

创建好后,用下面的内容更新server.bat文件

  1. java -classpath ../ WebContent/WEB-INF/lib/hsqldb.jar org.hsqldb.Server -database spring001

接下来,要创建两个sql文件,一个是create_products.sql文件,一个是load_data.sql文件,都在db目录下面。

create_products.sql用来创建表products,内容如下

  1. CREATE TABLE products (
  2.   id INTEGER NOT NULL PRIMARY KEY,
  3.   description varchar(255),
  4.   price decimal(15,2)
  5. );
  6. CREATE INDEX products_description ON products(description);

load_data.sql,用来添加一些测试数据,内容如下

  1. INSERT INTO products (id, description, price) values(1, 'Lamp', 5.78);
  2. INSERT INTO products (id, description, price) values(2, 'Table', 75.29);
  3. INSERT INTO products (id, description, price) values(3, 'Chair', 22.81);

数据库的创建方面就先准备到这,接下来,先说一下,访问数据库的相关技术内容,这里使用的是JDBC技术,为了实现这个访问功能,我们需要创建几个java文件

首先,创建一个接口文件ProductDao.java,位置在springapp/repository/包下面

因为还没有repository包,我们先创建repository包。

然后在它下面创建ProductDao.java文件,这是一个接口文件,内容如下:

  1. package springapp.repository;
  2. import java.util.List;
  3. import springapp.domain.Product;
  4. public interface ProductDao {
  5.     public List<Product> getProductList();
  6.     public void saveProduct(Product prod);
  7. }

然后,创建一个JdbcProductDao.java来实现这个接口文件,内容如下

  1. package springapp.repository;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import org.apache.commons.logging.Log;
  6. import org.apache.commons.logging.LogFactory;
  7. import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
  8. import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
  9. import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
  10. import springapp.domain.Product;
  11. public class JdbcProductDao extends SimpleJdbcDaoSupport implements ProductDao {
  12.     /** Logger for this class and subclasses */
  13.     protected final Log logger = LogFactory.getLog(getClass());
  14.     public List<Product> getProductList() {
  15.         logger.info("Getting products!");
  16.         List<Product> products = getSimpleJdbcTemplate().query(
  17.                 "select id, description, price from products",
  18.                 new ProductMapper());
  19.         return products;
  20.     }
  21.     public void saveProduct(Product prod) {
  22.         logger.info("Saving product: " + prod.getDescription());
  23.         int count = getSimpleJdbcTemplate().update(
  24.             "update products set description = :description, price = :price where id = :id",
  25.             new MapSqlParameterSource().addValue("description", prod.getDescription())
  26.                 .addValue("price", prod.getPrice())
  27.                 .addValue("id", prod.getId()));
  28.         logger.info("Rows affected: " + count);
  29.     }
  30.    
  31.     private static class ProductMapper implements ParameterizedRowMapper<Product> {
  32.         public Product mapRow(ResultSet rs, int rowNum) throws SQLException {
  33.             Product prod = new Product();
  34.             prod.setId(rs.getInt("id"));
  35.             prod.setDescription(rs.getString("description"));
  36.             prod.setPrice(new Double(rs.getDouble("price")));
  37.             return prod;
  38.         }
  39.     }
  40. }

因为引入数据库后,product多了一个key值,所以要修改一下springapp/domain/Product.java文件,修改后的内容如下:

  1. package springapp.domain;
  2. import j
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值