一、 基础的配置文件
- applicationContext.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
https://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
<!--1.先去读取数据库的配置文件, db.properties-->
<context:property-placeholder location="classpath:db.properties"/>
<!--2. [IOC]定义数据源 id class-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!--2.2 设置数据源属性 name 数据源驱动-->
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
<!--3.定义事物管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--3.1 设置事物的属性-->
<property name="dataSource" ref="dataSource"/>
</bean>
<!--4.开启事物的注解-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 5定义Mybatis 的控制翻转 降低耦合性 实例化 new的过程-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 文件的位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 配置文件映射-->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
<!--实体类别名配置-->
<property name="typeAliasesPackage" value="cn.javabs.phonemall.entity"/>
</bean>
<!-- 6定义Mybatis 映射扫描信息-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="cn.javabs.phonemall.mapper"/>
</bean>
<!-- 7. 扫描service 层 Mapper 层-->
<context:component-scan base-package="cn.javabs.phonemall"/>
</beans>
2.db.properties
# 数据库 的链接信息参数配置 需要更改数据库名称和密码
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/phonemall
db.username=root
db.password=root
- log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
- log4j2.properties
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
- springmvc-config.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:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 1.开启springmvc注解扫描-->
<context:component-scan base-package="cn.javabs.phonemall.controller"/>
<!-- 2. 开启MVC注解驱动-->
<mvc:annotation-driven/>
<!-- 3.配置静态资源-->
<!-- 后台页面所需静态资源-->
<mvc:resources mapping="/resource/js/**" location="/resource/js"/>
<mvc:resources mapping="/resource/css/**" location="/resource/css/"/>
<mvc:resources mapping="/resource/images/**" location="/resource/images/"/>
<mvc:resources mapping="/resource/fonts/**" location="/resource/fonts/"/>
<!--前台资源解析器 -->
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/fonts/**" location="/fonts/"/>
<!-- <mvc:resources mapping="/pic/**" location="/pic/"/>-->
<mvc:resources mapping="/images/**" location="/images/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/layer/**" location="/layer/"/>
<!-- 4.配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value=""/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 5.配置拦截器-->
<!-- <mvc:interceptors>-->
<!-- <mvc:interceptor>-->
<!-- <mvc:mapping path="/admin/**/"/>-->
<!-- <bean class="cn.javabs.phonemall.controller.AdminInterceptor"></bean>-->
<!-- </mvc:interceptor>-->
<!-- </mvc:interceptors>-->
<!-- 6.配置多媒体文件解析器 用于文件的上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件上传的大小,最大允许上传尺寸为5MB 1024*1024*10/2= 1MB-->
<property name="maxUploadSizePerFile" value="5242880"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
</beans>
- 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_4_0.xsd"
version="4.0">
<!-- 1.spring 的监听器-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 2.spring mvc 的前端控制器-->
<servlet>
<servlet-name>sprinmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 设置初始化值-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-cofig.xml</param-value>
</init-param>
<!-- 程序一启动就加载本配置文件-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sprinmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 3.核心过滤器-->
<filter>
<filter-name>CharacterEndingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEndingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- 在配置文件之前必须先进行到坐标 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>org.example</groupId>
<artifactId>phoneMail_SSM</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>phoneMail_SSM Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!--1.spring框架的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--AOP 辅助依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- spring的依赖Acpests-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--Spring 的test-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--2.springmvc框架的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--3.mybatis框架的依赖 核心依赖 辅助依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!--1.mybatis-spring框架整合的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.1</version>
</dependency>
<!-- 导入logj4 依赖-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
<!-- 日志包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.1.12</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!--5.mybati数据库的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 6.druid 数据库连接的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.14</version>
</dependency>
<!-- 7. mybatis 分页pagegelper 的依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
<!--8. Servlet 4.0 依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!-- jstl 依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
<!--工具类-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.3.49.ALL</version> </dependency>
<!-- </dependency>-->
<!-- 上传下载-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- 单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
二 、 先是 实现类 —— service—— service实现体——mapper——mapper.xml—— 控制器 连接页面代码的枢纽
- 分类
package cn.javabs.phonemall.entity;
import java.io.Serializable;
/**
* 分类的实体类
*/
public class Category implements Serializable {
private Integer cid;
private String cname;
// alt + insert 生成 有参 无参 getter和setter 方法 toString 方法
@Override
public String toString() {
return "Category{" +
"cid=" + cid +
", cname='" + cname + '\'' +
'}';
}
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Category() {
super();
}
public Category(Integer cid, String cname) {
this.cid = cid;
this.cname = cname;
}
}
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.Category;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("categoryMapper")
public interface CategoryMapper {
/**
* 是否有名字 全部查询 和模胡查询
* @param cname
* @return
*/
List findAll(String cname);
/**
* 根据 cid 模胡查询
* @param cid
* @return
*/
Category findById(Integer cid);
/**
* 添加分类
* @param category
* @return
*/
int add(Category category);
/**
* 删除分类
* @param cid
* @return
*/
int del(Integer cid);
/**
* 修改分类
* @param category
* @return
*/
int update(Category category);
}
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.Category;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("categoryMapper")
public interface CategoryMapper {
/**
* 是否有名字 全部查询 和模胡查询
* @param cname
* @return
*/
List findAll(String cname);
/**
* 根据 cid 模胡查询
* @param cid
* @return
*/
Category findById(Integer cid);
/**
* 添加分类
* @param category
* @return
*/
int add(Category category);
/**
* 删除分类
* @param cid
* @return
*/
int del(Integer cid);
/**
* 修改分类
* @param category
* @return
*/
int update(Category category);
}
```java
package cn.javabs.phonemall.service.impl;
import cn.javabs.phonemall.entity.Category;
import cn.javabs.phonemall.mapper.CategoryMapper;
import cn.javabs.phonemall.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service("categoryService")// 开启service方法
@Transactional //开启方法
public class CategoryServiceImpl implements CategoryService {
@Autowired
@Qualifier("categoryMapper")
private CategoryMapper categoryMapper;
/**
* 根据用户 是否 有名字 进行全部查询和模胡查询
*
* @param cname
* @return
*/
@Override
public List<Category> finAllCategory(String cname) {
List list = null;
System.out.println("cname:"+cname);
list = categoryMapper.findAll(cname);
System.out.println("cnmae:"+cname);
return list;
}
/**
* 根据编号获取分类
*
* @param cid
* @return
*/
@Override
public Category findCategoryById(Integer cid) {
Category category =categoryMapper.findById(cid);
return category;
}
/**
* 添加分类
*
* @param category
* @return
*/
@Override
public int addCategory(Category category) {
int number = categoryMapper.add(category);
return number;
}
/**
* 删除分类
*
* @param cid
* @return
*/
@Override
public int delCategory(Integer cid) {
int number = categoryMapper.del(cid);
return number;
}
/**
* 修改分类
*
* @param category
* @return
*/
@Override
public int editCategory(Category category) {
int number = categoryMapper.update(category);
return number;
}
}
```java
package cn.javabs.phonemall.service;
import cn.javabs.phonemall.entity.Category;
import java.util.List;
public interface CategoryService {
/**
* 根据用户 是否 有名字 进行全部查询和模胡查询
* @param cname
* @return
*/
List<Category> finAllCategory(String cname);
/**
* 根据编号获取分类
* @param cid
* @return
*/
Category findCategoryById(Integer cid);
/**
* 添加分类
* @param category
* @return
*/
int addCategory(Category category);
/**
* 删除分类
* @param cid
* @return
*/
int delCategory(Integer cid);
/**
* 修改分类
* @param category
* @return
*/
int editCategory(Category category);
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 表示命名空间 -->
<mapper namespace="cn.javabs.phonemall.mapper.CategoryMapper">
<!-- SQL语句 -->
<!-- 查询全部以及模胡查询-->
<select id="findAll" parameterType="String" resultType="category">
<!--模胡查询-->
<if test="cname != null">
select * from category where cname like concat('%',#{cname},'%') order by cid desc
</if>
<!-- 查询全部并以倒序的方式培训-->
<if test="cname == null">
select * from category order by cid desc
</if>
</select>
<!-- 根据cid 进行查询分类-->
<select id="findById" parameterType="Integer" resultType="Category">
select * from category where cid = #{cid}
</select>
<!-- 添加-->
<insert id="add" parameterType="category">
insert into category
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="cname != null">
cname,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="cname != null">
#{cname},
</if>
</trim>
</insert>
<!-- 删除-->
<delete id="del" parameterType="Integer">
delete from category where cid = #{cid}
</delete>
<!-- 修改-->
<update id="update" parameterType="category">
update category set cname =#{cname} where cid =#{cid}
</update>
</mapper>
- 商品
package cn.javabs.phonemall.entity;
/**
* 商品类
*/
public class Goods {
private Integer gid;
private String gname;
private String images1;
private String images2;
private Double price;
private String intro; //简绍
private Integer stock; // 库存
private Integer categoryId; //分类ID
private Category category;
private boolean topScroll;// 条幅推荐
private boolean toplarge;// 大图推荐
public Integer getGid() {
return gid;
}
public void setGid(Integer gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public String getImages1() {
return images1;
}
public void setImages1(String images1) {
this.images1 = images1;
}
public String getImages2() {
return images2;
}
public void setImages2(String images2) {
this.images2 = images2;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
public Integer getStock() {
return stock;
}
public void setStock(Integer stock) {
this.stock = stock;
}
public Integer getCategoryId() {
return categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public boolean isTopScroll() {
return topScroll;
}
public void setTopScroll(boolean topScroll) {
this.topScroll = topScroll;
}
public boolean isToplarge() {
return toplarge;
}
public void setToplarge(boolean toplarge) {
this.toplarge = toplarge;
}
public boolean isTopSmall() {
return topSmall;
}
public void setTopSmall(boolean topSmall) {
this.topSmall = topSmall;
}
private boolean topSmall;// 小图推荐
@Override
public String toString() {
return "Goods{" +
"gid=" + gid +
", gname='" + gname + '\'' +
", images1='" + images1 + '\'' +
", images2='" + images2 + '\'' +
", price=" + price +
", intro='" + intro + '\'' +
", stock=" + stock +
", categoryId=" + categoryId +
", category=" + category +
", topScroll=" + topScroll +
", toplarge=" + toplarge +
", topSmall=" + topSmall +
'}';
}
public Goods() {
super();
}
public Goods(Integer gid, String gname, String images1, String images2, Double price, String intro, Integer stock, Integer categoryId, Category category, boolean topScroll, boolean toplarge, boolean topSmall) {
this.gid = gid;
this.gname = gname;
this.images1 = images1;
this.images2 = images2;
this.price = price;
this.intro = intro;
this.stock = stock;
this.categoryId = categoryId;
this.category = category;
this.topScroll = topScroll;
this.toplarge = toplarge;
this.topSmall = topSmall;
}
}
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.Goods;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 商品的控制器
*/
@Repository("goodsMapper")
public interface GoodsMapper {
List<Goods> findName(String gname);
List<Goods> find(Integer categoryId);
// List<Goods> find(@Param("starIndex") int startIndex,
// @Param("pageSize") int pageSize);
// @Select("select count(*) from goods where categoryId =#{categoryId}")
int findTotal(Integer categoryId);
// @Select("select count(*) from goods")
// int findTotal();
@Select("select * from goods where gid=#{gid}")
Goods findById(Integer gid);
int add(Goods goods);
int del(Integer gid);
int update(Goods goods);
}
package cn.javabs.phonemall.service.impl;
import cn.javabs.phonemall.entity.Category;
import cn.javabs.phonemall.entity.Goods;
import cn.javabs.phonemall.entity.Recommend;
import cn.javabs.phonemall.mapper.CategoryMapper;
import cn.javabs.phonemall.mapper.GoodsMapper;
import cn.javabs.phonemall.service.GoodsService;
import cn.javabs.phonemall.service.RecommendService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service("goodsService")
@Transactional
public class GoodsServiceImpl implements GoodsService {
@Autowired
@Qualifier("goodsMapper")
private GoodsMapper goodsMapper;
@Autowired
@Qualifier("categoryMapper")
private CategoryMapper categoryMapper;
@Autowired
@Qualifier("recommendService")
private RecommendService recommendService;
/**
* 迷糊查询商品
*
* @param gname
* @return
*/
@Override
public List<Goods> findGoodsByLikeNMae(String gname) {
List<Goods> goodsList = goodsMapper.findName(gname);
return goodsList;
}
/**
* 通过分类查询商品
*
* @param categoryId
* @return
*/
@Override
public List<Goods> findAllGoods(Integer categoryId, Byte status) {
if (status == 0) {
return goodsMapper.find(categoryId);
}
List<Recommend> recommendList = recommendService.findAll(status);
// 判断集合是否为空
if (recommendList != null && recommendList.size()>0){
List<Goods> goodsList = new ArrayList<>();
// 从集合中 循环取出 每一项
for (Recommend recommend:recommendList){
// 获取商品id
Integer goodsId = recommend.getGoodsId();
// 通过商品id 获取商品对象
Goods goods = goodsMapper.findById(goodsId);
// 把商品放入 集合中去
goodsList.add(goods);
}
return goodsList;
}
return null;
}
// List<Goods> goodsList = null;
// if (categoryId == null) {
// goodsList = goodsMapper.find(null, startIndex, pageSize);
// } else {
// goodsList = goodsMapper.find(categoryId, startIndex, pageSize);
// }
// return goodsList;
// }
/**
* 通过分类获取商品的总条数
*
* @param categoryId
*/
@Override
public int findTotalRecords(Integer categoryId) {
return goodsMapper.findTotal(categoryId) ;
}
/**
* 通过id进行查询
*
* @param gid
* @return
*/
@Override
public Goods findGoodsById(Integer gid) {
Goods goods = goodsMapper.findById(gid);
System.out.println("goods="+goods);
Integer categoryId =goods.getCategoryId();
Category category = categoryMapper.findById(categoryId);
System.out.println("category:"+category);
goods.setCategory(category);
return goods;
}
/**
* 添加商品
*
* @param goods
* @return
*/
@Override
public int addGoods(Goods goods) {
return goodsMapper.add(goods);
}
/**
* 删除商品
*
* @param gid
* @return
*/
@Override
public int delGoods(Integer gid) {
return goodsMapper.del(gid);
}
/**
* 修改商品
*
* @param goods
* @return
*/
@Override
public int editGoods(Goods goods) {
return goodsMapper.update(goods);
}
}
package cn.javabs.phonemall.service;
import cn.javabs.phonemall.entity.Goods;
import java.util.List;
public interface GoodsService {
/**
* 获取商品列表
* @param startIndex
* @param pageSize
* @return
*/
// List<Goods> findsAllGoods(int startIndex,int pageSize);
/**
* 获取商品总条数
* @return
*/
// int findTotalRecords();
/**
* 迷糊查询商品
* @param gname
* @return
*/
List<Goods> findGoodsByLikeNMae(String gname);
/**
* 通过分类查询商品
* @param categoryId
* @return
*/
List<Goods> findAllGoods(Integer categoryId, Byte status);
/**
* 通过分类获取商品的总条数
*/
int findTotalRecords(Integer categoryId);
/**
* 通过id进行查询
* @param gid
* @return
*/
Goods findGoodsById(Integer gid);
/**
* 添加商品
* @param goods
* @return
*/
int addGoods(Goods goods);
/**
* 删除商品
* @param gid
* @return
*/
int delGoods(Integer gid);
/**
* 修改商品
* @param goods
* @return
*/
int editGoods(Goods goods);
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 表示命名空间 -->
<mapper namespace="cn.javabs.phonemall.mapper.GoodsMapper">
<!-- SQL语句 -->
<select id="findName" parameterType="String" resultType="Goods">
<if test="gname == null">
select * from goods order gid desc
</if>
<if test="gname != null">
select * from goods where gname like concat('%'#{gname}'%') order by gid desc
</if>
</select>
<select id="find" parameterType="int" resultType="Goods">
select * from goods
<where>
<!--分类分页插查询-->
<if test=" categoryId == null">
</if>
<if test="status == 0">
status = #{status}
</if>
<!-- 分类分页查询-->
<if test="categoryId != null">
categoryId = #{categoryId}
</if>
</where>
</select>
<select id="findTotal" parameterType="int" resultType="int">
select count (*) from goods
<!--查询总条数 -->
<if test="categoryId == null">
</if>
<!--查询该分类的总条数-->
<if test="categoryId != null">
categoryId = #{categoryId}
</if>
</select>
<!-- 添加商品-->
<insert id="add" parameterType="goods">
insert into goods (gname,images1,images2,price,intro,stock,categoryId)
values (#{gname},#{images1},#{images2},#{price},#{intro},#{stock},#{categoryId})
<!-- insert into goods-->
<!-- <trim prefix="(" suffix=")" suffixOverrides=",">-->
<!-- <if test="gname != null">-->
<!-- gname,-->
<!-- </if>-->
<!-- <if test="images1 != null">-->
<!-- images1,-->
<!-- </if>-->
<!-- <if test="price != null">-->
<!-- price,-->
<!-- </if>-->
<!-- </trim>-->
<!-- <trim prefix="values (" suffix=")" suffixOverrides=",">-->
<!-- <if test="gname != null">-->
<!-- #{gname},-->
<!-- </if>-->
<!-- <if test=" images1 != null">-->
<!-- #{images1},-->
<!-- </if>-->
<!-- <if test="images2 != null">-->
<!-- images2-->
<!-- </if>-->
<!-- <if test="price != null">-->
<!-- price,-->
<!-- </if>-->
<!-- </trim>-->
</insert>
<!--删除商品-->
<delete id="del" parameterType="int">
delete from goods where gid = #{gid}
</delete>
<!--修改商品-->
<update id="update" parameterType="goods">
-- update goods set gname=#{gname},images1=#{images1},images2=#{images2},price=#{price},intro=#[intro},stock=#{stock},categoryId=#{categoryId}
-- where gid =#{gid}
update goods
<trim suffixOverrides=",">
<set>
<if test="gname != null">
gname=#{gname},
</if>
<if test="images1 != null">
images1=#{images1},
</if>
<if test="images2 != null">
images2=#{images2},
</if>
<if test="price != null ">
price=#{price},
<if test="intro != null">
intro=#[intro},
</if>
</if>
<if test="stock != null">
stock=#{stock},
</if>
<if test="categoryId != null">
categoryId=#{categoryId}
</if>
where gid =#{gid}
</set>
</trim>
</update>
</mapper>
- 订单项
package cn.javabs.phonemall.entity;
/**
* 订单项
*/
public class orderItem {
private Integer id; //订单项编号
private Double price;// 每一项的小计
private Integer amount;// 每一项的数量小计
private Integer orderId;// 订单编号
private Integer goodsIs;// 商品的id
private double total;// 总价格
private Goods goods;// 商品对象
public orderItem() {
super();
}
@Override
public String toString() {
return "orderItem{" +
"id=" + id +
", price=" + price +
", amount=" + amount +
", orderId=" + orderId +
", goodsIs=" + goodsIs +
", total=" + total +
", goods=" + goods +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
public Integer getOrderId() {
return orderId;
}
public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public Integer getGoodsIs() {
return goodsIs;
}
public void setGoodsIs(Integer goodsIs) {
this.goodsIs = goodsIs;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
public orderItem(Integer id, Double price, Integer amount, Integer orderId, Integer goodsIs, double total, Goods goods) {
this.id = id;
this.price = price;
this.amount = amount;
this.orderId = orderId;
this.goodsIs = goodsIs;
this.total = total;
this.goods = goods;
}
}
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.orderItem;
import com.alipay.api.domain.OrderItem;
public interface OrderItemMapper {
int deleteByPrimaryKey(Integer id);
int insert(orderItem record);
int insertSelective(OrderItem record);
OrderItem selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(OrderItem record);
int updateByPrimaryKey(OrderItem record);
}
package cn.javabs.phonemall.service.impl;
import cn.javabs.phonemall.entity.Goods;
import cn.javabs.phonemall.entity.Orders;
import cn.javabs.phonemall.entity.Users;
import cn.javabs.phonemall.entity.orderItem;
import cn.javabs.phonemall.mapper.OrderItemMapper;
import cn.javabs.phonemall.mapper.OrdersMapper;
import cn.javabs.phonemall.service.GoodsService;
import cn.javabs.phonemall.service.OrdersService;
import cn.javabs.phonemall.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service("ordesService")
@Transactional
public class OrdersServiceImpl implements OrdersService {
@Autowired
@Qualifier("ordersMapper")
private OrdersMapper ordersMapper;
@Autowired
@Qualifier("goodsService")
private GoodsService goodsService;
@Autowired
@Qualifier("userService")
private UserService userService;
@Autowired
@Qualifier("orderItemMapper")
private OrderItemMapper orderItemMapper;
/**
* 查询所有订单
*
* @param status
* @return
*/
@Override
public List<Orders> findAllOrders(Integer status) {
List<Orders> ordersList=ordersMapper.findAllByStatuts(status);
for (Orders order: ordersList){
// 获取订单的编号
Integer orderId = order.getOid();
// 调用 获取所有订单 方法 返回 所有订单订单项
List<orderItem> orderItemList = this.findAllItem(orderId);
// 将所有的订单项 放入到订单中
order.setorderItems(orderItemList);
// 获取用户编号
Integer userId = order.getUserid();
// 根据用户编号 获取 用户对象
Users user = userService.findUserById(userId);
// 将用户对象封装订单中
order.setUsers(user);
}
return ordersList;
}
/**
* 根据 订单编号查询订单信息
*
* @param orderId
* @return
*/
@Override
public Orders findOrdersById(Integer orderId) {
Orders orders= ordersMapper.selectByPrimaryKey(orderId);
return orders;
}
/**
* 获取某用户的所有订单
*
* @param userId
* @return
*/
@Override
public List<Orders> findOrdersByUserId(Integer userId) {
List<Orders> Orderslist = ordersMapper.getOrdersByUserId(userId);
return null;
}
/**
* 添加订单
*
* @param goods
* @return
*/
@Override
public Orders addOrder(Goods goods) {
ArrayList<orderItem> orderItems = new ArrayList<>();
orderItem o = addItem(goods);
orderItems.add(o);
Orders orders = new Orders();
orders.setorderItems(orderItems);
return orders;
}
@Override
public Orders find(int number) {
return ordersMapper.selectByPrimaryKey(number);
}
/**
* 保存订单
*
* @param orders
* @return
*/
@Override
public int saveOrder(Orders orders) {
orders.setStatus(Orders.STATUS_UPAY); // 未付款
// 设置下单时间
Date date = new Date(); // 系统时间
orders.setSystime(date); // 时间戳
ordersMapper.insert(orders);
// 获取订单的编号
Integer orderId = orders.getOid();
// 获取订单项
List<orderItem> orderItem = orders.getorderItems();
for (cn.javabs.phonemall.entity.orderItem item: orderItem){
item.setOrderId(orderId);
orderItemMapper.insert(item);
}
return 0;
}
/**
* 创建订单项
*/
public orderItem addItem(Goods goods){
orderItem item = new orderItem();
item.setGoodsIs(goods.getGid());
item.setAmount(1);
item.setPrice(goods.getPrice());
item.setTotal(goods.getPrice());
Goods good = goodsService.findGoodsById(goods.getGid());
item.setGoods(goods);
return item;
}
/**
* 获取订单项
*/
public List<orderItem> findAllItem(int orderId){
List<orderItem> orderItemList = ordersMapper.findorderItemList();
for (orderItem item : orderItemList){
Integer gid = item.getGoodsIs();
Goods goods = goodsService.findGoodsById(gid);
item.setGoods(goods);
}
return orderItemList;
}
}
package cn.javabs.phonemall.service;
import cn.javabs.phonemall.entity.Goods;
import cn.javabs.phonemall.entity.Orders;
import java.util.List;
public interface OrdersService {
/**
* 查询所有订单
* @param status
* @return
*/
List<Orders> findAllOrders(Integer status);
/**
* 根据 订单编号查询订单信息
* @param oid
* @return
*/
Orders findOrdersById(Integer oid);
/**
* 获取某用户的所有订单
* @param userId
* @return
*/
List<Orders> findOrdersByUserId(Integer userId);
/**
* 添加订单
* @param goods
* @return
*/
Orders addOrder(Goods goods);
Orders find(int number);
/**
* 保存订单
* @param orders
* @return
*/
int saveOrder(Orders orders);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.javabs.phonemall.mapper.OrderItemMapper">
<resultMap id="BaseResultMap" type="cn.javabs.phonemall.entity.orderItem">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="price" jdbcType="DOUBLE" property="price" />
<result column="amount" jdbcType="INTEGER" property="amount" />
<result column="orderId" jdbcType="INTEGER" property="orderid" />
<result column="goodsId" jdbcType="INTEGER" property="goodsid" />
</resultMap>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="orderItem" useGeneratedKeys="true">
insert into ordersitem (price, amount, orderId,
goodsId)
values (#{price,jdbcType=DOUBLE}, #{amount,jdbcType=INTEGER}, #{orderid,jdbcType=INTEGER},
#{goodsid,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="orderItem" useGeneratedKeys="true">
insert into ordersitem
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="price != null">
price,
</if>
<if test="amount != null">
amount,
</if>
<if test="orderid != null">
orderId,
</if>
<if test="goodsid != null">
goodsId,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="price != null">
#{price,jdbcType=DOUBLE},
</if>
<if test="amount != null">
#{amount,jdbcType=INTEGER},
</if>
<if test="orderid != null">
#{orderid,jdbcType=INTEGER},
</if>
<if test="goodsid != null">
#{goodsid,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByExampleSelective" parameterType="map">
update ordersitem
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=INTEGER},
</if>
<if test="record.price != null">
price = #{record.price,jdbcType=DOUBLE},
</if>
<if test="record.amount != null">
amount = #{record.amount,jdbcType=INTEGER},
</if>
<if test="record.orderid != null">
orderId = #{record.orderid,jdbcType=INTEGER},
</if>
<if test="record.goodsid != null">
goodsId = #{record.goodsid,jdbcType=INTEGER},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update ordersitem
set id = #{record.id,jdbcType=INTEGER},
price = #{record.price,jdbcType=DOUBLE},
amount = #{record.amount,jdbcType=INTEGER},
orderId = #{record.orderid,jdbcType=INTEGER},
goodsId = #{record.goodsid,jdbcType=INTEGER}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="orderItem">
update ordersitem
<set>
<if test="price != null">
price = #{price,jdbcType=DOUBLE},
</if>
<if test="amount != null">
amount = #{amount,jdbcType=INTEGER},
</if>
<if test="orderid != null">
orderId = #{orderid,jdbcType=INTEGER},
</if>
<if test="goodsid != null">
goodsId = #{goodsid,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="orderItem">
update ordersitem
set price = #{price,jdbcType=DOUBLE},
amount = #{amount,jdbcType=INTEGER},
orderId = #{orderid,jdbcType=INTEGER},
goodsId = #{goodsid,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
4 订单
package cn.javabs.phonemall.entity;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* orders
* @author
*/
public class Orders implements Serializable{
// 订单状态
public static final int STATUS_UPAY=1;// 未付款
public static final int STATUS_PAYED=2;// 已付款
public static final int STATUS_SEND=3;// 已发货
public static final int STATUS_FINISH=4;// 已完成
//支付方式
public static final int PAYTYPE_WECHAT = 1 ;//微笑支付
public static final int PAYTYPE_ALIPAY = 2 ;//支付宝支付
public static final int PAYTYPE_OFFINE = 3 ;//货到付款
private Integer oid; //订单表
private Integer total;//总价格
private Integer amount;//商品总价
private Integer status;// 订单状态(1未付款/2已付款/ 3已发货/ 4已完成)
private Integer paytype;//支付方式(1微信/2支付宝/3货到付款)
private String realname;//收货人
private String phone;//收货电话
private String address; //收货地址
private Date systime; //下单时间
private Integer userid; //下单用户
private Users users; // 用户对象
public Integer getOid() {
return oid;
}
public void setOid(Integer oid) {
this.oid = oid;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getPaytype() {
return paytype;
}
public void setPaytype(Integer paytype) {
this.paytype = paytype;
}
public String getRealname() {
return realname;
}
/**
* 设置下单用户
* @param realname
*/
public void setRealname(String realname) {
this.realname = realname==null?null:realname.trim();//trim() 去掉字符串两端的空格
}
public String getPhone() {
return phone;
}
/**
* 设置客户电话
* @param phone
*/
public void setPhone(String phone) {
this.phone = phone==null?null:phone.trim();
}
public String getAddress() {
return address;
}
/**
* 设置客户地址
* @param address
*/
public void setAddress(String address) {
this.address = address==null?null:address.trim();
}
public Date getSystime() {
return systime;
}
public void setSystime(Date systime) {
this.systime = systime;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
public List<orderItem> getorderItems() {
return orderItems;
}
public void setorderItems(List<orderItem> orderItems) {
this.orderItems = orderItems;
}
private List<orderItem> orderItems; // 订单项
}
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.Orders;
import cn.javabs.phonemall.entity.orderItem;
import org.apache.ibatis.annotations.Select;
import java.util.List;
//import cn.javabs.phonemall.entity.OrdersExample;
public interface OrdersMapper {
// long countByExample(OrdersExample example);
// int deleteByExample(OrdersExample example);
int deleteByPrimaryKey(Integer oid);
int insert(Orders record);
int insertSelective(Orders record);
// List<Orders> selectByExample(OrdersExample example);
Orders selectByPrimaryKey(Integer oid);
// int updateByExampleSelective(@Param("record") Orders record, @Param("example") OrdersExample example);
// int updateByExample(@Param("record") Orders record, @Param("example") OrdersExample example);
int updateByPrimaryKeySelective(Orders record);
int updateByPrimaryKey(Orders record);
/**
* 查询所有订单
* @param status
* @return
*/
@Select("select * from orders where status = #{status}")
List<Orders> findAllByStatuts(Integer status);
@Select("select * from orders where orderId = #{orderId} ")
List<orderItem> findorderItemList();
@Select("select * from orders where userId={userId}")
List<Orders> getOrdersByUserId(Integer userId);
/**
* 保存订单
* @param orders
*/
int add(Orders orders);
int add(orderItem item);
}
package cn.javabs.phonemall.service.impl;
import cn.javabs.phonemall.entity.Goods;
import cn.javabs.phonemall.entity.Orders;
import cn.javabs.phonemall.entity.Users;
import cn.javabs.phonemall.entity.orderItem;
import cn.javabs.phonemall.mapper.OrderItemMapper;
import cn.javabs.phonemall.mapper.OrdersMapper;
import cn.javabs.phonemall.service.GoodsService;
import cn.javabs.phonemall.service.OrdersService;
import cn.javabs.phonemall.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service("ordesService")
@Transactional
public class OrdersServiceImpl implements OrdersService {
@Autowired
@Qualifier("ordersMapper")
private OrdersMapper ordersMapper;
@Autowired
@Qualifier("goodsService")
private GoodsService goodsService;
@Autowired
@Qualifier("userService")
private UserService userService;
@Autowired
@Qualifier("orderItemMapper")
private OrderItemMapper orderItemMapper;
/**
* 查询所有订单
*
* @param status
* @return
*/
@Override
public List<Orders> findAllOrders(Integer status) {
List<Orders> ordersList=ordersMapper.findAllByStatuts(status);
for (Orders order: ordersList){
// 获取订单的编号
Integer orderId = order.getOid();
// 调用 获取所有订单 方法 返回 所有订单订单项
List<orderItem> orderItemList = this.findAllItem(orderId);
// 将所有的订单项 放入到订单中
order.setorderItems(orderItemList);
// 获取用户编号
Integer userId = order.getUserid();
// 根据用户编号 获取 用户对象
Users user = userService.findUserById(userId);
// 将用户对象封装订单中
order.setUsers(user);
}
return ordersList;
}
/**
* 根据 订单编号查询订单信息
*
* @param orderId
* @return
*/
@Override
public Orders findOrdersById(Integer orderId) {
Orders orders= ordersMapper.selectByPrimaryKey(orderId);
return orders;
}
/**
* 获取某用户的所有订单
*
* @param userId
* @return
*/
@Override
public List<Orders> findOrdersByUserId(Integer userId) {
List<Orders> Orderslist = ordersMapper.getOrdersByUserId(userId);
return null;
}
/**
* 添加订单
*
* @param goods
* @return
*/
@Override
public Orders addOrder(Goods goods) {
ArrayList<orderItem> orderItems = new ArrayList<>();
orderItem o = addItem(goods);
orderItems.add(o);
Orders orders = new Orders();
orders.setorderItems(orderItems);
return orders;
}
@Override
public Orders find(int number) {
return ordersMapper.selectByPrimaryKey(number);
}
/**
* 保存订单
*
* @param orders
* @return
*/
@Override
public int saveOrder(Orders orders) {
orders.setStatus(Orders.STATUS_UPAY); // 未付款
// 设置下单时间
Date date = new Date(); // 系统时间
orders.setSystime(date); // 时间戳
ordersMapper.insert(orders);
// 获取订单的编号
Integer orderId = orders.getOid();
// 获取订单项
List<orderItem> orderItem = orders.getorderItems();
for (cn.javabs.phonemall.entity.orderItem item: orderItem){
item.setOrderId(orderId);
orderItemMapper.insert(item);
}
return 0;
}
/**
* 创建订单项
*/
public orderItem addItem(Goods goods){
orderItem item = new orderItem();
item.setGoodsIs(goods.getGid());
item.setAmount(1);
item.setPrice(goods.getPrice());
item.setTotal(goods.getPrice());
Goods good = goodsService.findGoodsById(goods.getGid());
item.setGoods(goods);
return item;
}
/**
* 获取订单项
*/
public List<orderItem> findAllItem(int orderId){
List<orderItem> orderItemList = ordersMapper.findorderItemList();
for (orderItem item : orderItemList){
Integer gid = item.getGoodsIs();
Goods goods = goodsService.findGoodsById(gid);
item.setGoods(goods);
}
return orderItemList;
}
}
package cn.javabs.phonemall.service;
import cn.javabs.phonemall.entity.Goods;
import cn.javabs.phonemall.entity.Orders;
import java.util.List;
public interface OrdersService {
/**
* 查询所有订单
* @param status
* @return
*/
List<Orders> findAllOrders(Integer status);
/**
* 根据 订单编号查询订单信息
* @param oid
* @return
*/
Orders findOrdersById(Integer oid);
/**
* 获取某用户的所有订单
* @param userId
* @return
*/
List<Orders> findOrdersByUserId(Integer userId);
/**
* 添加订单
* @param goods
* @return
*/
Orders addOrder(Goods goods);
Orders find(int number);
/**
* 保存订单
* @param orders
* @return
*/
int saveOrder(Orders orders);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.javabs.phonemall.mapper.OrdersMapper">
<resultMap id="BaseResultMap" type="cn.javabs.phonemall.entity.Orders">
<id column="oid" jdbcType="INTEGER" property="oid" />
<result column="total" jdbcType="INTEGER" property="total" />
<result column="amount" jdbcType="INTEGER" property="amount" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="paytype" jdbcType="INTEGER" property="paytype" />
<result column="realname" jdbcType="VARCHAR" property="realname" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<result column="address" jdbcType="VARCHAR" property="address" />
<result column="systime" jdbcType="TIMESTAMP" property="systime" />
<result column="userId" jdbcType="INTEGER" property="userid" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
oid, total, amount, `status`, paytype, realname, phone, address, systime, userId
</sql>
<!-- <select id="selectByExample" parameterType="OrdersExample" resultMap="BaseResultMap">-->
<!-- select-->
<!-- <if test="distinct">-->
<!-- distinct-->
<!-- </if>-->
<!-- <include refid="Base_Column_List" />-->
<!-- from orders-->
<!-- <if test="_parameter != null">-->
<!-- <include refid="Example_Where_Clause" />-->
<!-- </if>-->
<!-- <if test="orderByClause != null">-->
<!-- order by ${orderByClause}-->
<!-- </if>-->
<!-- <if test="limit != null">-->
<!-- <if test="offset != null">-->
<!-- limit ${offset}, ${limit}-->
<!-- </if>-->
<!-- <if test="offset == null">-->
<!-- limit ${limit}-->
<!-- </if>-->
<!-- </if>-->
<!-- </select>-->
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from orders
where oid = #{oid,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from orders
where oid = #{oid,jdbcType=INTEGER}
</delete>
<!-- <delete id="deleteByExample" parameterType="OrdersExample">-->
<!-- delete from orders-->
<!-- <if test="_parameter != null">-->
<!-- <include refid="Example_Where_Clause" />-->
<!-- </if>-->
<!-- </delete>-->
<insert id="insert" keyColumn="oid" keyProperty="oid" parameterType="Orders" useGeneratedKeys="true">
-- 在语句插入之后执行
<selectKey order="AFTER" resultType="int" keyProperty="oid">
select last_insert_id()
</selectKey>
insert into orders (total, amount, `status`,
paytype, realname, phone,
address, systime, userId
)
values (#{total,jdbcType=INTEGER}, #{amount,jdbcType=INTEGER}, #{status,jdbcType=INTEGER},
#{paytype,jdbcType=INTEGER}, #{realname,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR},
#{address,jdbcType=VARCHAR}, #{systime,jdbcType=TIMESTAMP}, #{userid,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" keyColumn="oid" keyProperty="oid" parameterType="Orders" useGeneratedKeys="true">
insert into orders
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="total != null">
total,
</if>
<if test="amount != null">
amount,
</if>
<if test="status != null">
`status`,
</if>
<if test="paytype != null">
paytype,
</if>
<if test="realname != null">
realname,
</if>
<if test="phone != null">
phone,
</if>
<if test="address != null">
address,
</if>
<if test="systime != null">
systime,
</if>
<if test="userid != null">
userId,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="total != null">
#{total,jdbcType=INTEGER},
</if>
<if test="amount != null">
#{amount,jdbcType=INTEGER},
</if>
<if test="status != null">
#{status,jdbcType=INTEGER},
</if>
<if test="paytype != null">
#{paytype,jdbcType=INTEGER},
</if>
<if test="realname != null">
#{realname,jdbcType=VARCHAR},
</if>
<if test="phone != null">
#{phone,jdbcType=VARCHAR},
</if>
<if test="address != null">
#{address,jdbcType=VARCHAR},
</if>
<if test="systime != null">
#{systime,jdbcType=TIMESTAMP},
</if>
<if test="userid != null">
#{userid,jdbcType=INTEGER},
</if>
</trim>
</insert>
<!-- <select id="countByExample" parameterType="OrdersExample" resultType="java.lang.Long">-->
<!-- select count(*) from orders-->
<!-- <if test="_parameter != null">-->
<!-- <include refid="Example_Where_Clause" />-->
<!-- </if>-->
<!-- </select>-->
<update id="updateByExampleSelective" parameterType="map">
update orders
<set>
<if test="record.oid != null">
oid = #{record.oid,jdbcType=INTEGER},
</if>
<if test="record.total != null">
total = #{record.total,jdbcType=INTEGER},
</if>
<if test="record.amount != null">
amount = #{record.amount,jdbcType=INTEGER},
</if>
<if test="record.status != null">
`status` = #{record.status,jdbcType=INTEGER},
</if>
<if test="record.paytype != null">
paytype = #{record.paytype,jdbcType=INTEGER},
</if>
<if test="record.realname != null">
realname = #{record.realname,jdbcType=VARCHAR},
</if>
<if test="record.phone != null">
phone = #{record.phone,jdbcType=VARCHAR},
</if>
<if test="record.address != null">
address = #{record.address,jdbcType=VARCHAR},
</if>
<if test="record.systime != null">
systime = #{record.systime,jdbcType=TIMESTAMP},
</if>
<if test="record.userid != null">
userId = #{record.userid,jdbcType=INTEGER},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update orders
set oid = #{record.oid,jdbcType=INTEGER},
total = #{record.total,jdbcType=INTEGER},
amount = #{record.amount,jdbcType=INTEGER},
`status` = #{record.status,jdbcType=INTEGER},
paytype = #{record.paytype,jdbcType=INTEGER},
realname = #{record.realname,jdbcType=VARCHAR},
phone = #{record.phone,jdbcType=VARCHAR},
address = #{record.address,jdbcType=VARCHAR},
systime = #{record.systime,jdbcType=TIMESTAMP},
userId = #{record.userid,jdbcType=INTEGER}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="Orders">
update orders
<set>
<if test="total != null">
total = #{total,jdbcType=INTEGER},
</if>
<if test="amount != null">
amount = #{amount,jdbcType=INTEGER},
</if>
<if test="status != null">
`status` = #{status,jdbcType=INTEGER},
</if>
<if test="paytype != null">
paytype = #{paytype,jdbcType=INTEGER},
</if>
<if test="realname != null">
realname = #{realname,jdbcType=VARCHAR},
</if>
<if test="phone != null">
phone = #{phone,jdbcType=VARCHAR},
</if>
<if test="address != null">
address = #{address,jdbcType=VARCHAR},
</if>
<if test="systime != null">
systime = #{systime,jdbcType=TIMESTAMP},
</if>
<if test="userid != null">
userId = #{userid,jdbcType=INTEGER},
</if>
</set>
where oid = #{oid,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="Orders">
update orders
set total = #{total,jdbcType=INTEGER},
amount = #{amount,jdbcType=INTEGER},
`status` = #{status,jdbcType=INTEGER},
paytype = #{paytype,jdbcType=INTEGER},
realname = #{realname,jdbcType=VARCHAR},
phone = #{phone,jdbcType=VARCHAR},
address = #{address,jdbcType=VARCHAR},
systime = #{systime,jdbcType=TIMESTAMP},
userId = #{userid,jdbcType=INTEGER}
where oid = #{oid,jdbcType=INTEGER}
</update>
</mapper>
- 推荐
package cn.javabs.phonemall.entity;
/**
* 推荐实体类
*/
public class Recommend {
public static final Byte CATEGORY_SCROLL = 1; //条幅推荐
public static final Byte CATEGORY_FASHIONL = 2;// 热销推荐
public static final Byte CATEGORY_PERFONHACE = 3;//性价比
private Integer rid;
private Byte type;
private Integer goodsId;
private Goods goods;
@Override
public String toString() {
return "Recommend{" +
"rid=" + rid +
", type=" + type +
", goodsId=" + goodsId +
", goods=" + goods +
'}';
}
public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public Byte getType() {
return type;
}
public void setType(Byte type) {
this.type = type;
}
public Integer getGoodsId() {
return goodsId;
}
public void setGoodsId(Integer goodsId) {
this.goodsId = goodsId;
}
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
}
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.Recommend;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("recommendMapper")
public interface RecommendMapper {
/**
* 根据id商品 ,可以有都个推荐
* @param goodsId
* @return
*/
@Select("select * from recommend where goodsId")
List<Recommend> findGoodsId(Integer goodsId);
/**
* 根据推荐id查询
* @param rid
* @return
*/
@Select("select * from recommend where rid=#{rid}")
Recommend findById(Integer rid);
/**
* 获取所有
* @param type
* @return
*/
@Select("select * from recommend where type=#{type} order by rid")
List<Recommend> findAll(Byte type);
/**
* 添加推荐
* @param recommend
* @return
*/
int insert(Recommend recommend);
/**
* 删除推荐
* @param rid
* @return
*/
int del(Integer rid);
/**
* 修改推荐
* @param recommend
* @return
*/
int update(Recommend recommend);
}
package cn.javabs.phonemall.service.impl;
import cn.javabs.phonemall.entity.Goods;
import cn.javabs.phonemall.entity.Recommend;
import cn.javabs.phonemall.mapper.RecommendMapper;
import cn.javabs.phonemall.service.GoodsService;
import cn.javabs.phonemall.service.RecommendService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service("recommendService")
@Transactional
public class RecommendServiceImpl implements RecommendService {
@Autowired
@Qualifier("recommendMapper")
private RecommendMapper recommendMapper;
@Autowired
@Qualifier("goodsService")
private GoodsService goodsService;
/**
* 获取所有
*
* @param type
* @return
*/
@Override
public List<Recommend> findAll(Byte type) {
// 1.根据类型获取推荐
List<Recommend> recommendList= recommendMapper.findAll(type);
// 通过循环 取出所有推荐
for (Recommend recommend:recommendList){
// 从每一个推荐取出商品的id
Integer goodsId = recommend.getGoodsId();
// 通过商品id 获取商品
Goods goods = goodsService.findGoodsById(goodsId);
// 将商品对象放到推荐中表
recommend.setGoods(goods);
}
return recommendList;
}
/**
* 根据id商品 ,可以有都个推荐
*
* @param goodsId
* @return
*/
@Override
public List<Recommend> finaRecommendByGoodsId(Integer goodsId) {
return recommendMapper.findGoodsId(goodsId);
}
/**
* 根据推荐id查询
*
* @param rid
* @return
*/
@Override
public Recommend findRecommendById(Integer rid) {
return recommendMapper.findById(rid);
}
/**
* 添加推荐
*
* @param recommend
* @return
*/
@Override
public int addRecommend(Recommend recommend) {
return recommendMapper.insert(recommend);
}
/**
* 删除推荐
*
* @param rid
* @return
*/
@Override
public int delRecommend(Integer rid) {
return recommendMapper.del(rid);
}
/**
* 修改推荐
*
* @param recommend
* @return
*/
@Override
public int editRecommend(Recommend recommend) {
return recommendMapper.update(recommend);
}
}
package cn.javabs.phonemall.service;
import cn.javabs.phonemall.entity.Recommend;
import java.util.List;
/**
* 条幅推荐
* 热销推荐
* 性价比(海报推荐,轮播推荐)
*/
public interface RecommendService {
/**
* 获取所有
* @param type
* @return
*/
List<Recommend> findAll(Byte type);
/**
* 根据id商品 ,可以有都个推荐
* @param goodsId
* @return
*/
List<Recommend> finaRecommendByGoodsId(Integer goodsId);
/**
* 根据推荐id查询
* @param rid
* @return
*/
Recommend findRecommendById(Integer rid);
/**
* 添加推荐
* @param recommend
* @return
*/
int addRecommend(Recommend recommend);
/**
* 删除推荐
* @param rid
* @return
*/
int delRecommend(Integer rid);
/**
* 修改推荐
* @param recommend
* @return
*/
int editRecommend(Recommend recommend);
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 表示命名空间 -->
<mapper namespace="cn.javabs.phonemall.mapper.RecommendMapper">
<!-- SQL语句 -->
<!-- 添加推荐-->
<insert id="insert">
insert into recommend
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="rid != null">
rid,
</if>
<if test="type != null">
type ,
</if>
<if test="goodsId != null">
goodsId,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="rid != null">
#{rid},
</if>
<if test="type != null">
#{type},
</if>
<if test="goodsId != null">
#{goodId},
</if>
</trim>
</insert>
<!-- 删除推荐-->
<delete id="det">
delete from recommend
<where>
<if test="rid != null">
rid= #{rid}
</if>
</where>
</delete>
<!-- 修改推荐-->
<update id="update">
update recommend
<trim suffixOverrides=",">
<set>
<if test="type != null">
type = #{type},
</if>
<if test="goodsId != null">
goodsId =#{goodsId},
</if>
</set>
</trim>
where rid = #{rid}
</update>
</mapper>
- 用户
package cn.javabs.phonemall.entity;
import java.io.Serializable;
/**
* users
* @author
*/
public class Users implements Serializable {
private Integer uid;
private String username;
private String password;
private String realname;
private String phone;
private String address;
public Users() {
super();
}
@Override
public String toString() {
return "Users{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", realname='" + realname + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}
public Users(Integer uid, String username, String password, String realname, String phone, String address) {
this.uid = uid;
this.username = username;
this.password = password;
this.realname = realname;
this.phone = phone;
this.address = address;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
```java
package cn.javabs.phonemall.mapper;
import cn.javabs.phonemall.entity.Users;
import cn.javabs.phonemall.entity.UsersExample;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UsersMapper {
/**
* 查询总条数
* @param example
* @return
*/
long countByExample(UsersExample example);
int deleteByExample(UsersExample example);
/**
* 删除用户
* @param uid
* @return
*/
int deleteByPrimaryKey(Integer uid);
/**
* 添加用户
* @param record
* @return
*/
int insert(Users record);
int insertSelective(Users record);
// List<Users> selectByExample(UsersExample example);
/**
* 根据id 查找
* @param uid
* @return
*/
Users selectByPrimaryKey(Integer uid);
// int updateByExampleSelective(@Param("record") Users record, @Param("example") UsersExample example);
// int updateByExample(@Param("record") Users record, @Param("example") UsersExample example);
/**
* 修改用户
* @param record
* @return
*/
int updateByPrimaryKeySelective(Users record);
int updateByPrimaryKey(Users record);
/**
* 验证用户密码
* @param username
* @param password
* @return
*/
@Select("select * from users where username= #{username} and password = #{password")
Users findUserByUsernameAndPassword(@Param("username") String username,
@Param("password") String password);
/**
* 用户是否存在
* @param username
* @return
*/
@Select("select * from users where username=#{username}")
Users findUsername(String username);
/**
* 分页查询用户(分页)
* @param startIndex
* @param pageSize
* @return
*/
@Select("select * from users order by uid limit #{startIndex},#{pageSize}")
List<Users> findAll(@Param("startIndex") int startIndex,
@Param("pageSize") int pageSize);
/**
* 模糊查询
* @param username
* @return
*/
@Select("select * from users where username like concat('%',#{username},'%')")
List<Users> findUsernameByLikeUsername(String username);
}
```java
package cn.javabs.phonemall.service.impl;
import cn.javabs.phonemall.entity.Users;
import cn.javabs.phonemall.mapper.UsersMapper;
import cn.javabs.phonemall.service.UserService;
import cn.javabs.phonemall.util.Md55Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service("userService")
@Transactional
public class UsersServiceImpl implements UserService {
@Autowired
@Qualifier("usersMapper")
private UsersMapper usersMapper;
/**
* 验证用户密码
*
* @param username
* @param password
* @return
*/
@Override
public boolean checkUser(String username, String password) {
return usersMapper.findUserByUsernameAndPassword(username, Md55Util.encode(password))!=null;
}
/**
* 判断用户是否存在
*
* @param username
* @return
*/
@Override
public boolean isExist(String username) {
return usersMapper.findUsername(username) != null;
}
/**
* 添加用户
*
* @param users
* @return
*/
@Override
public int addUser(Users users) {
// 先获取密码
String password = users.getPassword();
// 再将密码进行加密
String encode = Md55Util.encode(password);
// 得到加密后的密码设置
users.setPassword(encode);
return usersMapper.insert(users);
}
/**
* 删除用户
*
* @param uid
* @return
*/
@Override
public int delUser(Integer uid) {
return usersMapper.deleteByPrimaryKey(uid);
}
/**
* 修改用户
*
* @param users
* @return
*/
@Override
public int editUser(Users users) {
return usersMapper.updateByPrimaryKeySelective(users);
}
/**
* 根据用户 UID 查询用户
*
* @param uid
* @return
*/
@Override
public Users findUserById(Integer uid) {
return usersMapper.selectByPrimaryKey(uid);
}
/**
* 分页查询用户(分页)
*
* @param startIndex
* @param pageSize
* @return
*/
@Override
public List<Users> findAllUsers(int startIndex, int pageSize) {
return usersMapper.findAll(startIndex,pageSize);
}
/**
* 模胡查询
*
* @param username
* @return
*/
@Override
public List<Users> findUserByLikeName(String username) {
return usersMapper.findUsernameByLikeUsername(username);
}
/**
* 查询用户的总条数
*
* @return
*/
@Override
public int findTotalItem() {
Long num = usersMapper.countByExample(null);
int number = num.intValue();
return number;
}
}
package cn.javabs.phonemall.service;
import cn.javabs.phonemall.entity.Users;
import java.util.List;
public interface UserService {
/**
* 验证用户密码
* @param username
* @param password
* @return
*/
boolean checkUser(String username,String password);
/**
* 判断用户是否存在
* @param username
* @return
*/
boolean isExist(String username);
/**
* 添加用户
* @param users
* @return
*/
int addUser(Users users);
/**
* 删除用户
* @param uid
* @return
*/
int delUser(Integer uid);
/**
* 修改用户
* @param users
* @return
*/
int editUser(Users users);
/**
* 根据用户 UID 查询用户
* @param uid
* @return
*/
Users findUserById(Integer uid);
/**
* 分页查询用户
* @param startIndex
* @param pageSize
* @return
*/
List<Users> findAllUsers(int startIndex, int pageSize);
/**
* 模胡查询
* @param username
* @return
*/
List<Users> findUserByLikeName(String username);
/**
* 查询用户的总条数
* @return
*/
int findTotalItem();
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.javabs.phonemall.entity.Users">
<resultMap id="BaseResultMap" type="Users">
<id column="uid" jdbcType="INTEGER" property="uid" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="realname" jdbcType="VARCHAR" property="realname" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<result column="address" jdbcType="VARCHAR" property="address" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
`uid`, username, `password`, realname, phone, address
</sql>
<select id="selectByExample" parameterType="cn.javabs.phonemall.entity.UsersExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from users
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="limit != null">
<if test="offset != null">
limit ${offset}, ${limit}
</if>
<if test="offset == null">
limit ${limit}
</if>
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from users
where `uid` = #{uid,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from users
where `uid` = #{uid,jdbcType=INTEGER}
</delete>
<delete id="deleteByExample" parameterType="cn.javabs.phonemall.entity.UsersExample">
delete from users
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" keyColumn="uid" keyProperty="uid" parameterType="Users" useGeneratedKeys="true">
insert into users (username, `password`, realname,
phone, address)
values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR},
#{phone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" keyColumn="uid" keyProperty="uid" parameterType="Users" useGeneratedKeys="true">
insert into users
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="username != null">
username,
</if>
<if test="password != null">
`password`,
</if>
<if test="realname != null">
realname,
</if>
<if test="phone != null">
phone,
</if>
<if test="address != null">
address,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="username != null">
#{username,jdbcType=VARCHAR},
</if>
<if test="password != null">
#{password,jdbcType=VARCHAR},
</if>
<if test="realname != null">
#{realname,jdbcType=VARCHAR},
</if>
<if test="phone != null">
#{phone,jdbcType=VARCHAR},
</if>
<if test="address != null">
#{address,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="cn.javabs.phonemall.entity.UsersExample" resultType="java.lang.Long">
select count(*) from users
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update users
<set>
<if test="record.uid != null">
`uid` = #{record.uid,jdbcType=INTEGER},
</if>
<if test="record.username != null">
username = #{record.username,jdbcType=VARCHAR},
</if>
<if test="record.password != null">
`password` = #{record.password,jdbcType=VARCHAR},
</if>
<if test="record.realname != null">
realname = #{record.realname,jdbcType=VARCHAR},
</if>
<if test="record.phone != null">
phone = #{record.phone,jdbcType=VARCHAR},
</if>
<if test="record.address != null">
address = #{record.address,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update users
set `uid` = #{record.uid,jdbcType=INTEGER},
username = #{record.username,jdbcType=VARCHAR},
`password` = #{record.password,jdbcType=VARCHAR},
realname = #{record.realname,jdbcType=VARCHAR},
phone = #{record.phone,jdbcType=VARCHAR},
address = #{record.address,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="cn.javabs.phonemall.entity.Users">
update users
<set>
<if test="username != null">
username = #{username,jdbcType=VARCHAR},
</if>
<if test="password != null">
`password` = #{password,jdbcType=VARCHAR},
</if>
<if test="realname != null">
realname = #{realname,jdbcType=VARCHAR},
</if>
<if test="phone != null">
phone = #{phone,jdbcType=VARCHAR},
</if>
<if test="address != null">
address = #{address,jdbcType=VARCHAR},
</if>
</set>
where `uid` = #{uid,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="cn.javabs.phonemall.entity.Users">
update users
set username = #{username,jdbcType=VARCHAR},
`password` = #{password,jdbcType=VARCHAR},
realname = #{realname,jdbcType=VARCHAR},
phone = #{phone,jdbcType=VARCHAR},
address = #{address,jdbcType=VARCHAR}
where `uid` = #{uid,jdbcType=INTEGER}
</update>
</mapper>
- 工具类
package cn.javabs.phonemall.util;
import org.springframework.util.Base64Utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 密码加密安全工具箱
*/
public class Md55Util {
public final static String md5(String pass){
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
// byte[] bytes = pass.getBytes();
// messageDigest.update(bytes);
// byte[] digest = messageDigest.digest();
// Base64Utils.encodeToString(digest)
messageDigest.update(pass.getBytes());
return Base64Utils.encodeToString(messageDigest.digest());
}
/**
* 机密成字符串
* @param pass
* @return
*/
public final static String shai(String pass){
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
messageDigest.update(pass.getBytes());
return Base64Utils.encodeToString(messageDigest.digest());
}
/**
* 通过特点的方式加密
* @param pass
* @return
*/
public final static String encode(String pass){
return md5(shai(md5(pass)));
}
}
package cn.javabs.phonemall.util;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
import java.util.Random;
/**
* 上传的工具类
*/
public class UploadUtil {
/**
* 图片上传
* @param file
* @return
*/
public static String fileUpload(MultipartFile file) throws IOException {
// 1.是否有上传文件
// 2. 文件是不是空的,上传的文件名是不是空的
if (Objects.nonNull(file) || file.isEmpty() || Objects.isNull(file.getOriginalFilename())){
// 如果是空接是空的
return null;
}
// 2.明确有上传文件
String savePath="pic";// 保存文件的目录
String filename = file.getOriginalFilename();// 获取上传文件的文件名称
String path = ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/")+savePath;
// 上传文件一样就报 500
// Date date = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
// String currentTime = sdf.format(date);
// 获取文件的后缀名
String suffix = filename.substring(filename.lastIndexOf(".") + 1, filename.length());
// 简设 currenTime 时间戳
String currentTime = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())+new Random().nextInt(899)+100;// 随机范围:100-999
filename = currentTime + "."+suffix;
File saveFile = new File(path, filename);
// 如果不存在创建 mkdirs.makeeDirectores
if (!saveFile.exists()){
saveFile.mkdirs();
}
System.out.println("输出文件路径:"+saveFile.getPath());
file.transferTo(saveFile);
return savePath+"/"+filename ;
}
}