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>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 ; } }