SSM简单搭建含Redis

一.环境

javaWeb后端技术

框架:Spring+SpringMVC+Mybatis  (redis含集群和单机简单应用)

服务器tomcat8.5(同装8.0和9.0方便适应性调试)    Nginx这个我也不会使  自行教程安装

IDE:  IntelliJ)即可  之前用的Eclipse很久了,上手IDEA后真的很简单   自行教程安装

JDK:  jdk8(JDK1.8.131)   自行教程安装

接口测试工具---------》(用于模拟请求获取服务器返回的JSONObject)

接口测试工具1:Postman

接口测试工具2:自写安卓应用->HttpURLconnection、OkHttp3、retrofit 自行百度教程

接口测试工具3:Web(网页技术:H5) ajax、node.js、XMLHttpRequest(原生ajax)(用于模拟请求) 自行百度教程

Redis:WIN版  点此下载教程-提取码:2whr: 教程自带资源链接)

数据库:Mysql8.0.17   sqlite、SqlServer和Oracle暂不写  自行教程安装

数据库工具:Dos(cmd)、navicat....  自行学习

项目管理工具:Maven(用于管理jar包)  我在写android的时候

Git工具:GitBash 这里我就不拿我仓库地址了(点此直接下载源码 提取码:pv8h

二.创建工程

可以看到src>main下有个webapp,删除它,src是放java代码的地方,应该有java和resource两个文件夹

将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>WebLogin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>WebLogin 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>
    <spring.version>5.2.2.RELEASE</spring.version>
    <security.version>5.2.1.RELEASE</security.version>
    <slf4j.version>2.0.0-alpha1</slf4j.version>
    <log4j.version>2.13.0</log4j.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <redis.version>3.2.0</redis.version>
    <spring.data.redis.version>2.2.3.RELEASE</spring.data.redis.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!--spring-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>
    <!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.18</version>
    </dependency>
    <!--javax.mail-->
    <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.2</version>
    </dependency>
    <!--spring依赖-->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.5</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.5.4</version>
    </dependency>
    <!--文件上传-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.3</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.3</version>
    </dependency>
    <!-- Druid连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.21</version>
    </dependency>
    <!--dbcp连接池-->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <version>1.6</version>
    </dependency>
    <!-- json配置-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.10.1</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.10.1</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.10.1</version>
    </dependency>
    <!-- google的json格式支持 -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.6</version>
    </dependency>
    <!--阿里fastJson-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.62</version>
    </dependency>
    <!-- freemarker -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.29</version>
    </dependency>
    <!--servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!--jstl-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
      <scope>provided</scope>
    </dependency>
    <!--log4j2-->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>${slf4j.version}</version>
      <scope>runtime</scope>
    </dependency>
    <!--核心log4j2jar包-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <!--用于与slf4j保持桥接-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <!--web工程需要包含log4j-web,非web工程不需要-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-web</artifactId>
      <version>${log4j.version}</version>
      <scope>runtime</scope>
    </dependency>
    <!--需要使用log4j2的AsyncLogger需要包含disruptor-->
    <dependency>
      <groupId>com.lmax</groupId>
      <artifactId>disruptor</artifactId>
      <version>3.4.2</version>
    </dependency>
    <!--log4j2完 -//- shiro-->
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.4.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-spring</artifactId>
      <version>1.4.2</version>
    </dependency>
    <!--搭建redis:start-->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>${redis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-redis</artifactId>
      <version>${spring.data.redis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-commons</artifactId>
      <version>${spring.data.redis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.8.0</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <!--mybatis 逆向工程插件-->
      <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.4.0</version>
        <configuration>
          <!--配置文件的位置-->
          <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
          <verbose>true</verbose>
          <overwrite>true</overwrite>
        </configuration>
        <executions>
          <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.0</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
    <finalName>WebLogin</finalName>
    <resources>
      <!--表示把java目录下的有关xml文件,properties文件编译/打包的时候放在resource目录下-->
      <resource>
        <directory>${basedir}/src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
      </resource>
    </resources>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

你刚粘贴过来,你maven本地仓库不一定有这类炸包,或者没有该类对应版本的jar包,所以dependcies会泛红,将鼠标悬停到每个version泛红的地方,依次Update Maven Indices,请保证有网!他才会帮你下载jar包  

将一.git工具处下载的源码下载下来,依次按java和resource将目录下的文件复制到工程对应位置

建立webapp,该文间夹等同于Eclipse->Dynamic Web Project中的WebContent,将源码包里的代码也复制到webapp文件夹

此时就可以添加module组件了,看左上角:File>Project Structure

现在配置webapp文件夹至web组件

此时你发现META-INF并未配置

此时web组件配置完成了一半,注意刚生成组件写的是web,你要自己改为webapp

上图Source Roots我已经配置完了,你们可能会显示,因为你们没有配置该项

在Artifacts进行配置,然后点击apply进行保存  不能直接点OK

接下来要配置服务器tomcat

如果你忘了将工程放至tomcat工作空间,会报warning, 请按以下步骤

好了,此时点击apply再点击ok进行保存

配置好了,先不用启动服务器

现在我们要实现分页获取用户功能,首先看源码

实体类YzUsers:

package ssm.Pojo;
// Generated 2019-11-16 13:53:28 by Hibernate Tools 3.6.0.Final

import java.util.HashSet;
import java.util.Set;

/**
 * YzUsers generated by hbm2java
 * 益众网用户实体类
 */
public class YzUsers implements java.io.Serializable {

	private static final long serialVersionUID = 7828915891651379458L;
	private String id; // 生成Java.util.UUID x32ef
	private YzStatus yzStatus; //多对一关联:用户的身份
	private String realname; // 用户设置的真实姓名或称谓  初始化12(大众会员)
	private String username; // 用户用于登录的账号  Unique
	private String password; // 用户用于登录的密码
	private String qq; // 用户设置的QQ  Default=NULL
	private String email; // 用户个人邮箱,可用于找回密码  Default=NULL
	private String wechat; // 用户微信号  Default=NULL
	private String mobile; // 用户手机号 Default=NULL
	private String address; // 用户联系地址  Default=NULL
	private Integer age; // 用户年龄  存值区间[10,90] Default=10
	private String sex; // 用户性别  约束(男或女)
	private String derive; // 用户出生地
	private String hobby; // 个人爱好
	private String u_img; // 用户头像图片
	private YzSurplus yzSurpluses;// 用户钱包,一对一关联
	private Set<YzMerch> yzMerch= new HashSet<YzMerch>();
	private Set<YzMerchUserOrder> yzMerchUserOrders = new HashSet<YzMerchUserOrder>(); // 用户订单,一对多关联

	public YzUsers() {
	}

	public YzUsers(String realname, String username, String password) {
		this.realname = realname;
		this.username = username;
		this.password = password;
	}

	public YzUsers(String id, YzStatus yzStatus, String realname, String username, String password, String qq, String email, String wechat, String mobile, String address, Integer age, String sex, String derive, String hobby, String u_img, YzSurplus yzSurpluses, Set<YzMerch> yzMerch, Set<YzMerchUserOrder> yzMerchUserOrders) {
		this.id = id;
		this.yzStatus = yzStatus;
		this.realname = realname;
		this.username = username;
		this.password = password;
		this.qq = qq;
		this.email = email;
		this.wechat = wechat;
		this.mobile = mobile;
		this.address = address;
		this.age = age;
		this.sex = sex;
		this.derive = derive;
		this.hobby = hobby;
		this.u_img = u_img;
		this.yzSurpluses = yzSurpluses;
		this.yzMerch = yzMerch;
		this.yzMerchUserOrders = yzMerchUserOrders;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public YzStatus getYzStatus() {
		return yzStatus;
	}

	public void setYzStatus(YzStatus yzStatus) {
		this.yzStatus = yzStatus;
	}

	public String getRealname() {
		return realname;
	}

	public void setRealname(String realname) {
		this.realname = realname;
	}

	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 getQq() {
		return qq;
	}

	public void setQq(String qq) {
		this.qq = qq;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getWechat() {
		return wechat;
	}

	public void setWechat(String wechat) {
		this.wechat = wechat;
	}

	public String getMobile() {
		return mobile;
	}

	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getDerive() {
		return derive;
	}

	public void setDerive(String derive) {
		this.derive = derive;
	}

	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}

	public YzSurplus getYzSurpluses() {
		return yzSurpluses;
	}

	public void setYzSurpluses(YzSurplus yzSurpluses) {
		this.yzSurpluses = yzSurpluses;
	}

	public Set<YzMerchUserOrder> getYzMerchUserOrders() {
		return yzMerchUserOrders;
	}

	public void setYzMerchUserOrders(Set<YzMerchUserOrder> yzMerchUserOrders) {
		this.yzMerchUserOrders = yzMerchUserOrders;
	}
	
	public String getU_img() {
		return u_img;
	}

	public void setU_img(String u_img) {
		this.u_img = u_img;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Set<YzMerch> getYzMerch() {
		return yzMerch;
	}

	public void setYzMerch(Set<YzMerch> yzMerch) {
		this.yzMerch = yzMerch;
	}

	public String toString(){
		String Info="User [ ";
		Info+="用户身份="+yzStatus.getStatus()+" ";
		Info+="昵称="+realname+" ";
		Info+="账号="+username+" ";
		Info+="密码="+password+" ";
		Info+="QQ号="+qq+" ";
		Info+="邮箱="+email+" ";
		Info+="微信="+wechat+" ";
		Info+="电话="+mobile+" ";
		Info+="地址="+address+" ";
		Info+="年龄="+age+" ";
		Info+="性别="+sex+" ";
		Info+="籍贯="+derive+" ";
		Info+="]";
		return Info;
	}
	

}

身份参照实体类YzStatus:

package ssm.Pojo;
// Generated 2019-11-16 13:53:28 by Hibernate Tools 3.6.0.Final

import java.util.HashSet;
import java.util.Set;

/**
 * YzStatus generated by hbm2java
 * 益众网用户身份映射参照的实体类
 */
public class YzStatus implements java.io.Serializable {

	private static final long serialVersionUID = -6839053582167331067L;
	private Integer id; // 底层数据库支持的identity生成的序列id
	private String status; // 用户身份称谓
	private int powerLevel; // 用户权限等级
	private Set<YzUsers> yzUserses = new HashSet<YzUsers>(); // 该身份映射于参照用户

	public YzStatus() {
	}

	public YzStatus(Integer id, String status, int powerLevel, Set<YzUsers> yzUserses) {
		super();
		this.id = id;
		this.status = status;
		this.powerLevel = powerLevel;
		this.yzUserses = yzUserses;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public int getPowerLevel() {
		return powerLevel;
	}

	public void setPowerLevel(int powerLevel) {
		this.powerLevel = powerLevel;
	}

	public Set<YzUsers> getYzUserses() {
		return yzUserses;
	}

	public void setYzUserses(Set<YzUsers> yzUserses) {
		this.yzUserses = yzUserses;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	public String toString(){
		String Info="Status [ ";
		Info+="id="+id+" ";
		Info+="称谓="+status+" ";
		Info+="级别="+powerLevel+" ";
		Info+="]";
		return Info;
	}
	
}

用户余额实体类YzSurplus:

package ssm.Pojo;
// Generated 2019-11-16 13:53:28 by Hibernate Tools 3.6.0.Final

/**
 * YzSurplus generated by hbm2java
 * 益众网用户关联账户实体类
 */
public class YzSurplus implements java.io.Serializable {

	private static final long serialVersionUID = 5610221464359637158L;
	private String id; // 生成Java.util.UUID x32ef
	private YzUsers yzUsers; // 一对一关联:账户对应的用户
	private String surplus; // 该用户的钱包余额

	public YzSurplus() {
	}

	public YzSurplus(String id, YzUsers yzUsers, String surplus) {
		this.id = id;
		this.yzUsers = yzUsers;
		this.surplus = surplus;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public YzUsers getYzUsers() {
		return this.yzUsers;
	}

	public void setYzUsers(YzUsers yzUsers) {
		this.yzUsers = yzUsers;
	}

	public String getSurplus() {
		return this.surplus;
	}

	public void setSurplus(String surplus) {
		this.surplus = surplus;
	}
	
	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public String toString(){
		String Info="Suplus [ ";
		Info+="用户姓名="+yzUsers.getRealname()+" ";
		Info+="余额="+surplus+" ";
		Info+="]";
		return Info;
	}
	
}

低层接口:UserDao

package ssm.Dao;

import org.apache.ibatis.annotations.Param;
import ssm.Pojo.YzUsers;

import java.util.List;
import java.util.Map;

/**
 * 用户方法接口
 */
public interface UserDao {
    //用户登陆
    public YzUsers UserLogin(@Param("account") String account, @Param("password") String password);
    //用户注册
    public int UserRegister(@Param("user")YzUsers user);
    //判断user_id是否存在
    public int isExistUser(@Param("id")String UUID);
    //用户注册使用,登陆的账号username必须唯一:检索是否存在
    public int isExistUsername(@Param("username")String username);
    //用户修改个人信息
    public int updateUser(@Param("user")YzUsers user);
    //删除用户
    public int deleteUser(@Param("id")String user_id);
    //查询所有用户,分页&计算用户总数
    public List<YzUsers> queryAllUsers(@Param("index")Integer index,@Param("maxResult")Integer maxResult);
    public int queryTotalUser();
    //批量插入用户
    public int BatchInsertUsers(Map<String,Object> map);
    //批量查询用户List<user_id>
    List<YzUsers> BatchFind(List<String> user_ids);
}

接口实现,mybatis是mapper.xml替代传统的UserDaoImpl    UserDaoMapper.xml:

<?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="ssm.Dao.UserDao">
    <!-- 单用户返回的user结构封装 -->
    <resultMap id="YzUserMap" type="ssm.Pojo.YzUsers">
        <id property="id" column="uid"/>
        <result property="realname" column="realname"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="email" column="email"/>
        <result property="wechat" column="wechat"/>
        <result property="mobile" column="mobile"/>
        <result property="address" column="address"/>
        <result property="age" column="age"/>
        <result property="sex" column="sex"/>
        <result property="derive" column="derive"/>
        <result property="hobby" column="hobby"/>
        <result property="u_img" column="u_img"/>
        <association property="yzStatus" >
            <id property="id" column="stid"/>
            <result property="status" column="status"/>
            <result property="powerLevel" column="PowerLevel"/>
        </association>
        <association property="yzSurpluses" >
            <id property="id" column="spid"/>
            <result property="surplus" column="surplus"/>
        </association>
        <collection property="yzMerch" ofType="ssm.Pojo.YzMerch">
            <id property="id" column="meid"/>
            <result property="merchName" column="MerchName"/>
            <result property="merchNo" column="MerchNo"/>
            <result property="classify" column="Classify"/>
            <result property="merchant" column="Merchant"/>
            <result property="introduce" column="Introduce"/>
            <result property="retailPrice" column="RetailPrice"/>
            <result property="surpAmount" column="SurpAmount"/>
            <result property="m_img" column="m_img"/>
        </collection>
        <collection property="yzMerchUserOrders" ofType="ssm.Pojo.YzMerchUserOrder">
            <id property="id" column="moid"/>
            <result property="orderAmount" column="OrderAmount"/>
            <result property="totalPrice" column="TotalPrice"/>
            <result property="Time" column="OrderTime"/>
        </collection>
    </resultMap>
    <!--用户登陆-->
    <select id="UserLogin" parameterType="String" resultMap="YzUserMap">
       select ys.id stid, status, PowerLevel,
            u.id uid, realname, username, password, qq, email, wechat, mobile, address, age, sex, derive, hobby, status_id, u_img,
            su.id spid, surplus,
            m.id meid, MerchName, MerchNo, Classify, Merchant, Introduce, RetailPrice, SurpAmount, product_user_id, m_img,
            ymuo.id moid, OrderAmount, TotalPrice, user_id, merch_id, OrderTime
       from yz_status ys inner join (yz_users u inner join (yz_surplus su left join (yz_merch m left join yz_merch_user_order ymuo on m.id = ymuo.merch_id) on su.id=m.product_user_id)on u.id=su.id) on u.status_id = ys.id
       where u.username=#{account} and u.password=#{password} /*'zhangsan' and u.password='123456';*/
    </select>
    <!--用户注册-->
    <insert id="UserRegister" parameterType="ssm.Pojo.YzUsers">
        insert into yz_users(id,realname, username, password
        <if test="user.qq!=null">,qq</if>
        <if test="user.email!=null">,email</if>
        <if test="user.wechat!=null">,wechat</if>
        <if test="user.mobile!=null">,mobile</if>
        <if test="user.address!=null">,address</if>
        <if test="user.age!=null">,age</if>
        <if test="user.sex!=null">,sex</if>
        <if test="user.derive!=null">,derive</if>
        <if test="user.hobby!=null">,hobby</if>
        <if test="user.yzStatus!=null">,status_id</if>
        <if test="user.u_img!=null">,u_img</if>)
        values(#{user.id},#{user.realname},#{user.username},#{user.password}
        <if test="user.qq!=null">,#{user.qq}</if>
        <if test="user.email!=null">,#{user.email}</if>
        <if test="user.wechat!=null">,#{user.wechat}</if>
        <if test="user.mobile!=null">,#{user.mobile}</if>
        <if test="user.address!=null">,#{user.address}</if>
        <if test="user.age!=null">,#{user.age}</if>
        <if test="user.sex!=null">,#{user.sex}</if>
        <if test="user.derive!=null">,#{user.derive}</if>
        <if test="user.hobby!=null">,#{user.hobby}</if>
        <if test="user.yzStatus!=null">,#{user.yzStatus.id}</if>
        <if test="user.u_img!=null">,#{user.u_img}</if>)
    </insert>
    <!--判断用户id是否已存在-->
    <select id="isExistUser" parameterType="String" resultType="int">
        select count(u.id) from yz_users u where u.id=#{id}
    </select>
    <!--判断用户名是否被占用-->
    <select id="isExistUsername" parameterType="String" resultType="int">
        select count(u.username) from yz_users u where u.username=#{username}
    </select>
    <!--动态更新用户信息-->
    <update id="updateUser" parameterType="ssm.Pojo.YzUsers">
        update yz_users
        <set>
            <if test="user.realname!=null">realname= #{user.realname},</if>
            <if test="user.password!=null">password=#{user.password},</if>
            <if test="user.qq!=null">qq=#{user.qq},</if>
            <if test="user.email!=null">email=#{user.email},</if>
            <if test="user.wechat!=null">wechat=#{user.wechat},</if>
            <if test="user.age!=null">age=#{user.age},</if>
            <if test="user.sex!=null">sex=#{user.sex},</if>
            <if test="user.derive!=null">derive=#{user.derive},</if>
            <if test="user.hobby!=null">hobby=#{user.hobby},</if>
            <if test="user.yzStatus!=null">status_id=#{user.yzStatus.id},</if>
            <if test="user.u_img!=null">u_img=#{user.u_img},</if>
            <if test="user.mobile!=null">mobile=#{user.mobile},</if>
            <if test="user.address!=null">address=#{user.address},</if>
        </set>
        <where>
            <choose>
                <when test="user.id!=null">
                    and yz_users.id = #{user.id}
                </when>
                <otherwise>
                    and 1 = 2
                </otherwise>
            </choose>
        </where>
    </update>
    <!--根据用户id删除用户-->
    <delete id="deleteUser" parameterType="String">
        delete from yz_users
        <where>
            <if test="id!=null">
                and id=#{id}
            </if>
        </where>
    </delete>
    <!--计算用户表记录数,分页使用,或统计网站注册用户数-->
    <select id="queryTotalUser" resultType="int">
        select count(*) from yz_users
    </select>
    <!--分页查询用户-->
    <select id="queryAllUsers" resultMap="YzUserMaps">
        select ys.id stid, status, PowerLevel,
            u.id uid, realname, username, password, qq, email, wechat, mobile, address, age, sex, derive, hobby, status_id, u_img,
            su.id spid, surplus
        from yz_status ys inner join (yz_users u inner join yz_surplus su on u.id=su.id) on u.status_id = ys.id
        limit #{index},#{maxResult}
    </select>
    <!-- 多用户返回的user结构封装 -->
    <resultMap id="YzUserMaps" type="ssm.Pojo.YzUsers">
        <id property="id" column="uid"/>
        <result property="realname" column="realname"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="email" column="email"/>
        <result property="wechat" column="wechat"/>
        <result property="mobile" column="mobile"/>
        <result property="address" column="address"/>
        <result property="age" column="age"/>
        <result property="sex" column="sex"/>
        <result property="derive" column="derive"/>
        <result property="hobby" column="hobby"/>
        <result property="u_img" column="u_img"/>
        <association property="yzStatus" >
            <id property="id" column="stid"/>
            <result property="status" column="status"/>
            <result property="powerLevel" column="PowerLevel"/>
        </association>
        <association property="yzSurpluses" >
            <id property="id" column="spid"/>
            <result property="surplus" column="surplus"/>
        </association>
    </resultMap>
    <!--批量注册用户 <vip企业通道> -->
    <insert id="BatchInsertUsers" parameterType="java.util.HashMap">
        insert into yz_users(id, realname, username, password, qq, email, wechat, mobile, address, age, sex, derive, hobby, status_id)
        values
        <include refid="BatchInsertUsersSQL"></include>
    </insert>
    <!-- 在打印控制台的执行语句中,写${field}可显示参数而#{}不可  -->
    <!--批量注册用户 <vip企业通道> 嵌套语句,#{map.keyname}就可以拿到map的值,故map不用foreach,其子元素进行foreach迭代 -->
    <sql id="BatchInsertUsersSQL">
        <foreach collection="userlist" item="user" separator=",">
            (#{user.id},#{user.realname},#{user.username},#{user.password},#{user.qq},#{user.email},#{user.wechat},#{user.mobile},#{user.address},#{user.age},#{user.sex},#{user.derive},#{user.hobby},#{status})
        </foreach>
    </sql>
    <!--根据id集合获取相应的用户集合-->
    <select id="BatchFind" resultMap="YzUserMaps">
        select ys.id stid, status, PowerLevel,
            u.id uid, realname, username, password, qq, email, wechat, mobile, address, age, sex, derive, hobby, status_id, u_img,
            su.id spid, surplus
        from yz_status ys inner join (yz_users u inner join yz_surplus su on u.id=su.id) on u.status_id = ys.id
        where u.id in
        <foreach collection="list" open="(" separator="," close=")" item="Uid" index="i">
            #{Uid}
        </foreach>
    </select>

</mapper>

Service层接口,用于解耦,USerService:

package ssm.Service;

import org.apache.ibatis.annotations.Param;
import ssm.Pojo.YzUsers;
import ssm.Tools.Page;

import java.util.List;
import java.util.Map;


/**
 * User服务层接口
 */
public interface UserService {
    //用户登陆
    public YzUsers UserLogin(@Param("account") String account, @Param("password") String password);
    //用户注册
    public int UserRegister(@Param("user")YzUsers user);
    //判断user_id是否存在
    public int isExistUser(@Param("id")String UUID);
    //用户注册使用,登陆的账号username必须唯一:检索是否存在
    public int isExistUsername(@Param("username")String username);
    //用户修改个人信息
    public int updateUser(@Param("user")YzUsers user);
    //删除用户
    public int deleteUser(@Param("id")String user_id);
    //查询所有用户,分页
    public Page<YzUsers> queryAllUsers(Integer pageNum, Integer pageSize);
    public int queryTotalUser();
    //批量插入用户
    public int BatchInsertUsers(List<Map<String,String>> list,Integer status);
    //批量查询用户List<user_id>
    List<YzUsers> BatchFind(List<String> user_ids);
}

与低层交互 ServiceImpl:

package ssm.Service.Impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ssm.Dao.SurplusDao;
import ssm.Dao.UserDao;
import ssm.Pojo.YzUsers;
import ssm.Service.UserService;
import ssm.Tools.Page;

import java.util.*;

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao ud;
    @Autowired
    private SurplusDao spd;

    @Override
    public YzUsers UserLogin(String account, String password) {
        return this.ud.UserLogin(account,password);
    }

    @Override
    public int UserRegister(YzUsers user) {
        this.ud.UserRegister(user);
        return this.spd.InitSurplus(user.getId(),"1.00");
    }

    @Override
    public int isExistUser(String UUID) {
        return this.ud.isExistUser(UUID);
    }

    @Override
    public int isExistUsername(String username) {
        return this.ud.isExistUsername(username);
    }

    @Override
    public int updateUser(YzUsers user) {
        return this.ud.updateUser(user);
    }

    @Override
    public int deleteUser(String user_id) {
        return this.ud.deleteUser(user_id);
    }

    @Override
    public Page<YzUsers> queryAllUsers(Integer pageNum, Integer pageSize) {
        Page<YzUsers> p=null;
        int totalcount=queryTotalUser();
        if(totalcount>0){
            p=new Page<YzUsers>(pageNum,pageSize,totalcount);
            List<YzUsers> list=this.ud.queryAllUsers(p.getIndex(),p.getPageSize());
            p.setList(list);
            return p;
        }
        return null;
    }

    @Override
    public int queryTotalUser() {
        return this.ud.queryTotalUser();
    }

    @Override
    public int BatchInsertUsers(List<Map<String,String>> list,Integer status) {
        Map<String,Object> mvp=new LinkedHashMap<>();
        //设置该批成员的身份类型
        mvp.put("status",status);
        //将List<Map>转化为List<YzUsers>
        List<YzUsers> userlist=new ArrayList<>();
        //存储每个用户的id,当user存在时为其添加账户关联
        List<String> ids=new ArrayList<>();
        YzUsers u=null;
        for(Map<String,String> ul:list){
            u=new YzUsers();
            //填充用户id
            String create_uid="";
            while(true){
                String uuid= UUID.randomUUID().toString().replaceAll("-", "");
                int count=isExistUser( uuid );
                if(count==0){
                    create_uid=uuid;break;
                }
            }
            u.setId(create_uid);
            ids.add(create_uid);
            //填充其余属性
            Iterator<Map.Entry<String,String>> it=ul.entrySet().iterator();
            while(it.hasNext()){
                Map.Entry<String,String> map=it.next();
                if(map.getKey().equals("realname")) u.setRealname(map.getValue());
                if(map.getKey().equals("username")) u.setUsername(map.getValue());
                if(map.getKey().equals("password")) u.setPassword(map.getValue());
                if(map.getKey().equals("qq")) u.setQq(map.getValue());
                if(map.getKey().equals("email")) u.setEmail(map.getValue());
                if(map.getKey().equals("wechat")) u.setWechat(map.getValue());
                if(map.getKey().equals("mobile")) u.setMobile(map.getValue());
                if(map.getKey().equals("address")) u.setAddress(map.getValue());
                if(map.getKey().equals("age")){
                    String ageSTR=map.getValue();
                    if(ageSTR!=null||!ageSTR.equals("")) u.setAge(Integer.parseInt(ageSTR));
                }
                if(map.getKey().equals("sex")) u.setSex(map.getValue());
                if(map.getKey().equals("derive")) u.setDerive(map.getValue());
                if(map.getKey().equals("hobby")) u.setHobby(map.getValue());
                //System.out.println(map.getKey()+"******"+map.getValue());
            }
            userlist.add(u);
        }
        mvp.put("userlist",userlist);
        //批量插入,返回影响行数
        int AffectLine=this.ud.BatchInsertUsers(mvp);
        //为每个用户初始化账户
        for(String id:ids)
            this.spd.InitSurplus(id,"1.00");
        return AffectLine;
    }

    @Override
    public List<YzUsers> BatchFind(List<String> user_ids) {
        return this.ud.BatchFind(user_ids);
    }
}

UserController: 业务逻辑层or服务器接口

package ssm.Controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import ssm.Pojo.YzStatus;
import ssm.Pojo.YzUsers;
import ssm.Service.UserService;
import ssm.Tools.JSONFilter;
import ssm.Tools.Page;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.*;

@Controller
@SessionAttributes(value={"user"})
public class UserController {
    @Autowired
    private UserService us;

    //用户登录
    @RequestMapping(value="user/login",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject select(@RequestParam("username") String username,@RequestParam("password") String password,Model model) throws IOException, ServletException {
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="登陆失败";
        YzUsers u=us.UserLogin(username,password);
        if(u!=null){
            statusCode=1;
            msg="登陆成功";
            model.addAttribute("user", u);
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        return json;
    }

    //用户注册
    @RequestMapping(value="user/register",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject add(HttpServletRequest request) throws IOException, ServletException {
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="注册失败";
        //取值
        String uname=request.getParameter("username");
        String password=request.getParameter("password");
        String name=request.getParameter("name");
        String mobile=request.getParameter("mobile");
        //年龄若空值则不进行转化,否则Integer转化空值会报空指针异常
        String ageSTR=request.getParameter("age")==null?null:request.getParameter("age");
        int age=0;
        if(ageSTR!=null) age=Integer.parseInt(request.getParameter("age"));
        String address=request.getParameter("address");
        String qq=request.getParameter("qq");
        String wechat=request.getParameter("wechat");
        String email=request.getParameter("email");
        String sex=request.getParameter("sex");
        //用户数组与年龄一样需要判空否则如下的for循环会报空指针错误
        String[] aihao=request.getParameterValues("aihao")==null?null:request.getParameterValues("aihao");
        String Aihao ="";
        if(aihao!=null){
            for(String s:aihao){
                Aihao+=s+",";
            }
            Aihao=Aihao.substring(0,Aihao.length()-1);
        }
        String jiguan=request.getParameter("jiguan");
        //实体对象转存数据
        YzUsers u=new YzUsers();
        //  用户id程序生成
        String create_uid="";
        while(true){
            String uuid=UUID.randomUUID().toString().replaceAll("-", "");
            int count=us.isExistUser( uuid );
            if(count==0){
                create_uid=uuid;break;
            }
        }
        if(!create_uid.equals("")){
            u.setId(create_uid);
            u.setUsername(uname);
            u.setRealname(name);
            u.setPassword(password);
            if(mobile!=null) u.setMobile(mobile);
            if(ageSTR!=null) u.setAge(age);;
            if(address!=null) u.setAddress(address);
            if(qq!=null) u.setQq(qq);
            if(wechat!=null) u.setWechat(wechat);
            if(email!=null) u.setEmail(email);
            if(sex!=null) u.setSex(sex);
            if(aihao!=null) u.setHobby(Aihao);
            if(jiguan!=null) u.setDerive(jiguan);
            //初始化用户身份
            YzStatus ys=new YzStatus();
            ys.setId(12);
            u.setYzStatus(ys);
            int AffectLine=us.UserRegister(u);
            if(AffectLine>0){
                statusCode=1;
                msg="注册成功";
            }
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        return json;
    }

    //检验用户名是否存在 redis or mysql
    @RequestMapping(value="user/uniqueUsername",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject isExistUsername(@RequestParam("username")String username) throws IOException, ServletException {
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="用户名已存在";
        int result=us.isExistUsername(username);
        if(result==0){
            statusCode=1;
            msg="此用户名可用";
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        return json;
    }
    //修改用户
    @RequestMapping(value="user/update",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject updateUser(HttpServletRequest request) throws IOException, ServletException {
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="信息修改失败";
        //取值
        String user_id=request.getParameter("user_id");
        String uname=request.getParameter("username");
        String password=request.getParameter("password");
        String name=request.getParameter("name");
        String mobile=request.getParameter("mobile");
        //年龄若空值则不进行转化,否则Integer转化空值会报空指针异常
        String ageSTR=request.getParameter("age")==null?null:request.getParameter("age");
        int age=0;
        if(ageSTR!=null) age=Integer.parseInt(request.getParameter("age"));
        String address=request.getParameter("address");
        String qq=request.getParameter("qq");
        String wechat=request.getParameter("wechat");
        String email=request.getParameter("email");
        String sex=request.getParameter("sex");
        String jiguan=request.getParameter("jiguan");
        //用户数组与年龄一样需要判空否则如下的for循环会报空指针错误
        String[] aihao=request.getParameterValues("aihao")==null?null:request.getParameterValues("aihao");
        String Aihao ="";
        if(aihao!=null){
            for(String s:aihao){
                Aihao+=s+",";
            }
            Aihao=Aihao.substring(0,Aihao.length()-1);
        }
        String u_imgPath=request.getParameter("u_img");
        //实体对象填充数据
        YzUsers u=new YzUsers();
        u.setId(user_id);
        if (uname != null) u.setUsername(uname);
        if (name != null) u.setRealname(name);
        if (password != null) u.setPassword(password);
        if (mobile != null) u.setMobile(mobile);
        if(ageSTR!=null) u.setAge(age);
        if (address != null) u.setAddress(address);
        if (qq != null) u.setQq(qq);
        if (wechat != null) u.setWechat(wechat);
        if (email != null) u.setEmail(email);
        if (sex != null) u.setSex(sex);
        if (aihao!=null) u.setHobby(Aihao);
        if (jiguan != null) u.setDerive(jiguan);
        if (u_imgPath != null) u.setU_img(u_imgPath);
        int result=us.updateUser(u);
        if(result>0){
            statusCode=1;
            msg="信息修改成功";
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        return json;
    }
    //删除用户
    @RequestMapping(value="user/delete",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject deleteUser(@RequestParam("id")String user_id) throws IOException, ServletException {
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="用户注销失败";
        int result=us.deleteUser(user_id);
        if(result>0){
            statusCode=1;
            msg="用户注销成功";
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        return json;
    }
    //查询用户(分页)
    @RequestMapping(value="user/page-ulist",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public String queryAllUsers(@RequestParam("pageNum")Integer pageNum,@RequestParam("pageSize")Integer pageSize) throws IOException, ServletException {
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="未获取到任何信息";
        Page<YzUsers> p=us.queryAllUsers(pageNum,pageSize);
        if(p!=null){
            json.put("page",p);
            statusCode=1;
            msg="获得用户信息列表";
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        //过滤掉子元素中的数组
        JSONFilter[] jfs={
                new JSONFilter(YzUsers.class,"yzMerch","yzMerchUserOrders"),
                new JSONFilter(YzStatus.class,"yzUserses")
        };
        return JSONObject.toJSONString(json,jfs).replace("page","UserPage");
    }
    //批量插入用户  //get该技能之后可练习写购物车下单
    @RequestMapping(value="user/batch-add",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject InsertUserList(@RequestBody Map<String,Object> map,HttpServletRequest request){
        JSONObject json=new JSONObject();
        int statusCode=-1;
        String msg="批量添加失败";
        String BatchUser_status=request.getParameter("status")==null?null:request.getParameter("status");
        Integer status=12;//如果没有特定设置身份,默认12(大众会员)
        if(BatchUser_status!=null) status=Integer.parseInt(BatchUser_status);
        List<Map<String,String>> userlist=null;
        String checkcode="";
        try{
            checkcode= (String) map.get("checkcode");
            if(checkcode.equals("ab9e8")){
                userlist= (List<Map<String,String>>) map.get("userlist");
                int AffectLine=us.BatchInsertUsers(userlist,status);
                if(AffectLine>0){
                    statusCode=1;
                    msg="批量添加成功";
                }
            }else{
                statusCode=-3;
                msg="你没有授权码调用该接口";
            }
        }catch(Exception e) {
            statusCode=-2;
            msg="请求参数格式不正确";
        }
        json.put("msg",msg);
        json.put("statusCode",statusCode);
        return json;
    }
    //批量查询用户List<user_id>
    @RequestMapping(value="user/batch-find",method= RequestMethod.POST,produces = "application/json;charset=UTF-8")
    @ResponseBody
    public JSONObject BatchFind(@RequestParam(value="uid",required=false)String ... Uids){
        JSONObject json=new JSONObject();
        String msg="查询失败";
        int statusCode=-1;
        List<String> list=null;
        if(Uids!=null&&Uids.length>0){
            list=new ArrayList<>();
            for(String id:Uids)
                list.add(id);
            List<YzUsers> ulist=us.BatchFind(list);
            if(ulist.size()>0){
                statusCode=1;
                msg="查询成功";
                JSONArray arrs=new JSONArray();
                for (YzUsers uu:ulist)
                    arrs.add(uu);
                json.put("userList",arrs);
            }
        }
        json.put("statusCode",statusCode);
        json.put("msg",msg);
        return json;
    }


}

好了,我们把tomcat启动起来

postman请准备好,其导出的文件已经放在源码的src>main>resource>WebLogin.postman_collection.json,导入它

该工程数据库配置文件也在src>main>resource>yzsearch.sql中,自行百度教程“sql文件使用”

接下来看看数据库中的数据

成功获取到服务器返回的信息

-----------------------------------------------end-----------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值