随着内容的不断深入,已经学了不少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,创建的时候,也许会弹出下面的警告框,请忽视,不会影响后面的步骤。 创建好后,用下面的内容更新server.bat文件
- 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,内容如下
- CREATE TABLE products (
- id INTEGER NOT NULL PRIMARY KEY,
- description varchar(255),
- price decimal(15,2)
- );
- CREATE INDEX products_description ON products(description);
load_data.sql ,用来添加一些测试数据,内容如下
- INSERT INTO products (id, description, price) values(1, 'Lamp', 5.78);
- INSERT INTO products (id, description, price) values(2, 'Table', 75.29);
- INSERT INTO products (id, description, price) values(3, 'Chair', 22.81);
数据库的创建方面就先准备到这,接下来,先说一下,访问数据库的相关技术内容,这里使用的是JDBC技术,为了实现这个访问功能,我们需要创建几个java文件 首先,创建一个接口文件ProductDao.java ,位置在springapp/repository/包下面 因为还没有repository包,我们先创建repository包。 然后在它下面创建ProductDao.java文件,这是一个接口文件,内容如下:
- package springapp.repository;
- import java.util.List;
- import springapp.domain.Product;
- public interface ProductDao {
- public List<Product> getProductList();
- public void saveProduct(Product prod);
- }
然后,创建一个JdbcProductDao.java来实现这个接口文件,内容如下
- package springapp.repository;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.List;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
- import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
- import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
- import springapp.domain.Product;
- public class JdbcProductDao extends SimpleJdbcDaoSupport implements ProductDao {
-
- protected final Log logger = LogFactory.getLog(getClass());
- public List<Product> getProductList() {
- logger.info("Getting products!");
- List<Product> products = getSimpleJdbcTemplate().query(
- "select id, description, price from products",
- new ProductMapper());
- return products;
- }
- public void saveProduct(Product prod) {
- logger.info("Saving product: " + prod.getDescription());
- int count = getSimpleJdbcTemplate().update(
- "update products set description = :description, price = :price where id = :id",
- new MapSqlParameterSource().addValue("description", prod.getDescription())
- .addValue("price", prod.getPrice())
- .addValue("id", prod.getId()));
- logger.info("Rows affected: " + count);
- }
-
- private static class ProductMapper implements ParameterizedRowMapper<Product> {
- public Product mapRow(ResultSet rs, int rowNum) throws SQLException {
- Product prod = new Product();
- prod.setId(rs.getInt("id"));
- prod.setDescription(rs.getString("description"));
- prod.setPrice(new Double(rs.getDouble("price")));
- return prod;
- }
- }
- }
因为引入数据库后,product多了一个key值,所以要修改一下springapp/domain/Product.java文件,修改后的内容如下:
- package springapp.domain;
- import j
|