一、项目初始化 ------------------------------------------------------------ 1.IDEA配置tomcat服务器 idea - > settings -> application servers --> + --> tomcat安装目录. 2.创建idea的新工程EShop 3.创建web模块,添加web application支持和maven支持和Spring4的支持 4.运行配置 run菜单->edit configuration->添加tomcat server-->右侧编辑名字,deployment添加模块 5.创建包结构 com.test.eshop.model com.test.eshop.dao com.test.eshop.dao.impl com.test.eshop.service com.test.eshop.service.impl com.test.eshop.util com.test.eshop.web com.test.eshop.web.controller 6.添加junit和c3p0数据源 maven支持 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> 7.准备win7下的mysql数据库 a.创建数据库eshop 登录mysql $mysql> create database eshop ; b.创建users表 $mysql> create table eshop.users(id int primary key auto_increment,name varchar(20),password varchar(20),regdate datetime) ; c.显式表结构 $mysql> desc users; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | | password | varchar(20) | YES | | NULL | | | regdate | datetime | YES | | NULL | | +----------+-------------+------+-----+---------+----------------+ 8.创建用户类 package com.test.eshop.model; import java.sql.Date; /** * User类 */ public class User { private Integer id ; private String name ; private String password ; private Date regDate ; //getXxx/setXxx } 9.引入新的maven依赖,hibernate [pom.xml] <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.5.6-Final</version> </dependency> 10.编写User类和users表之间的映射文件User.hbm.xml和User类放在一个目录下. [User.hbm.xml] //hibernate mapping <?xml version="1.0" encoding="utf-8"?> <!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.it18zhang.eshop.model.User" table="users"> <id name="id" column="id" type="integer"> <generator class="identity" /> </id> <property name="name" column="name" type="string" /> <property name="password" column="password" type="string" /> <property name="regDate" column="regdate" type="date" /> </class> </hibernate-mapping> 15.引入springframework依赖 [pom.xml] <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-hibernate</artifactId> <version>RELEASE</version> </dependency> 16.引入mysql的驱动 [pom.xml] <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version> </dependency> 17.resouces目录下创建jdbc配置文件jdbc.properties jdbc.driverclass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.43.1:3306/eshop jdbc.username=mysql jdbc.password=mysql c3p0.pool.size.max=10 c3p0.pool.size.min=2 c3p0.pool.size.ini=3 c3p0.pool.size.increment=2 18.创建spring的配置文件[resources/beans.xml] <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 指定外部文件的位置 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!-- c3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverclass}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxPoolSize" value="${c3p0.pool.size.max}"/> <property name="minPoolSize" value="${c3p0.pool.size.min}"/> <property name="initialPoolSize" value="${c3p0.pool.size.ini}"/> <property name="acquireIncrement" value="${c3p0.pool.size.increment}"/> </bean> </beans> 19.测试数据源类 package com.it18zhang.eshop.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import javax.sql.DataSource; import java.sql.Connection; /** * 测试数据源 */ public class TestDataSource { /** * 测试连接是否成功 */ @Test public void getConn() throws Exception { ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource) ac.getBean("dataSource"); Connection conn = ds.getConnection() ; System.out.println(conn); } } 二、创建Dao接口及其实现类 ------------------------------------------------------- 1.创建BaseDao接口 Dao : data access Object.数据访问对象. package com.test.eshop.dao; import java.util.List; /** * BaseDao接口 */ public interface BaseDao<T> { public void saveEntity(T t); public void updateEntity(T t); public void saveOrUpdateEntity(T t); public void deleteEntity(T t); public T getEntity(Integer id); /* 执行HSQL*/ public List<T> findByHQL(String hql,Object ... objects); public void execHQL(String hql, Object ... objects); } 2.编写BaseDao的实现类BaseDaoImpl<T> package com.test.eshop.dao.impl; import com.test.eshop.dao.BaseDao; import org.hibernate.Query; import org.hibernate.SessionFactory; import java.lang.reflect.ParameterizedType; import java.util.List; /** * 基本Dao的实现类 */ public abstract class BaseDaoImpl<T> implements BaseDao<T> { //引入hibernate的会话工厂--连接池 private SessionFactory sf; //设置会话工厂 public void setSf(SessionFactory sf) { this.sf = sf; } //用来加载通配的类的描述符 private Class<T> clazz; public BaseDaoImpl() { //得到泛型化超类 ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass(); //得到泛型T的实际类 clazz = (Class)type.getActualTypeArguments()[0]; } public void saveEntity(T t) { sf.getCurrentSession().save(t); } public void updateEntity(T t) { sf.getCurrentSession().update(t); } public void saveOrUpdateEntity(T t) { sf.getCurrentSession().saveOrUpdate(t); } public void deleteEntity(T t) { sf.getCurrentSession().delete(t); } public T getEntity(Integer id) { return (T)sf.getCurrentSession().get(clazz,id); } /** * 使用hivesql语句查询操作 */ public List<T> findByHQL(String hql, Object... objects) { Query q = sf.getCurrentSession().createQuery(hql); //绑定参数 for (int i = 0; i < objects.length; i++) { q.setParameter(i, objects[i]); } return q.list(); } /** * 使用hivesql语句批量写操作 */ public void execHQL(String hql, Object... objects) { Query q = sf.getCurrentSession().createQuery(hql); //绑定参数 for (int i = 0; i < objects.length; i++) { q.setParameter(i, objects[i]); } //执行sql q.executeUpdate(); } } 3.创建用户的Dao实现类 package com.test.eshop.dao.impl; import com.test.eshop.model.User; /** * 具体用户Dao实现类 -- 处理用户表的类 */ public class UserDaoImpl extends BaseDaoImpl<User> { } 三、创建基本服务接口和实现类 -- 交互dao的服务 ----------------------------------------------------- 1.创建基本服务接口BaseService<T>.java package com.test.eshop.service; import java.util.List; /** * BaseService接口. */ public interface BaseService<T> { public void saveEntity(T t); public void updateEntity(T t); public void saveOrUpdateEntity(T t); public void deleteEntity(T t); public T getEntity(Integer id); /* 按照HQL */ public List<T> findByHQL(String hql, Object... objects); public void execHQL(String hql, Object... objects); } 2.创建基本服务的基本实现类 package com.test.eshop.service.impl; import com.test.eshop.dao.BaseDao; import com.test.eshop.service.BaseService; import java.util.List; /** * BaseSercie接口的实现类 */ public abstract class BaseServiceImpl<T> implements BaseService<T> { private BaseDao<T> dao; public BaseDao<T> getDao() { return dao; } public void setDao(BaseDao<T> dao) { this.dao = dao; } public void saveEntity(T t) { dao.saveEntity(t); } public void updateEntity(T t) { dao.updateEntity(t); } public void saveOrUpdateEntity(T t) { dao.saveOrUpdateEntity(t); } public void deleteEntity(T t) { dao.deleteEntity(t); } public T getEntity(Integer id) { return dao.getEntity(id); } public List<T> findByHQL(String hql, Object... objects) { return dao.findByHQL(hql,objects); } public void execHQL(String hql, Object... objects) { dao.execHQL(hql,objects); } } 3.创建用户Service接口 package com.test.eshop.service; import com.test.eshop.model.User; /** * 用户独有的service接口 */ public interface UserService<User> extends BaseService<User>{ } 4.创建用户Service接口的实现类 package com.test.eshop.service.impl; import com.test.eshop.model.User; import com.test.eshop.service.UserService; public class UserServiceImpl<User> extends BaseServiceImpl<User> implements UserService<User> { } 四、引入Spring MVC框架 ---------------------------------------------- 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>eshop</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.8.Final</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.3.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.10</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version> </dependency> </dependencies> </project> 2.配置web-inf/web.xml [web/WEB-INF/web.xml] <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 上下文配置参数,指定的是spring的beans.xml文件位置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:beans.xml</param-value> </context-param> <!--通过监听器方式在tomcat启动时,完成beans容器的初始化--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置Spring的分发器控制器--> <servlet> <servlet-name>controller</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化参数,确保web服务器启动时,初始化springmvc容器 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/webmvc.xml</param-value> </init-param> </servlet> <!-- 映射 --> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 3.创建resources/webmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <mvc:default-servlet-handler /> <mvc:annotation-driven /> <!-- 扫描controller包 --> <context:component-scan base-package="com.test.eshop.web.controller" /> <!-- 内部资源视图解析器(解析的是jsp的路径) --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/jsps/"/> <property name="suffix" value=".jsp"/> </bean> </beans> 4.给类添加注解 a.注入会话工厂@Resource(name = "sf") public abstract class BaseDaoImpl<T> implements BaseDao<T> { //引入hibernate的会话工厂--连接池 private SessionFactory sf; //设置会话工厂 @Resource(name = "sf") public void setSf(SessionFactory sf) { this.sf = sf; } b.注册userDaoImpl到bean仓库中 @Repository("userDao") @Repository("userDao") public class UserDaoImpl extends BaseDaoImpl<User> { } c.注册服务UserServiceImpl到仓库中。并且注入userDao @Service("userService") public class UserServiceImpl<User> extends BaseServiceImpl<User> implements UserService<User> { /** * 重新该方法,需要注入指定的UserDao对象 */ @Resource(name = "userDao") public void setDao(BaseDao<User> dao) { super.setDao(dao); } } 5.测试Spring框架是否引入成功 //测试用户Service @Test public void teUserService() { ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); UserService us = (UserService) ac.getBean("userService"); User u = new User(); u.setName("tom"); u.setPassword("123456"); us.saveEntity(u); } 6.编写控制器HomeController package com.test.eshop.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * 主页控制器 */ @Controller public class HomeController { /** * 去主页 */ @RequestMapping(value = "/home", method = RequestMethod.GET) public String toHomePage() { return "index"; } }
大数据项目实战之 --- 某购物平台商品实时推荐系统(一)
猜你喜欢
转载自blog.csdn.net/xcvbxv01/article/details/84372553
今日推荐
周排行