Spring+SpringMVC+MyBatis后端实现过程

前言:Spring+SpringMVC+MyBatis实现过程展示

演示

包结构如下:
熟悉的control+dao+model+service
注:配置文件则根据具体需求网上自行配置,这里不做说明。

Control包中UserController代码如下

package com.zsx.sso0311.control;

import com.zsx.sso0311.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.UUID;

@Controller
@ResponseBody
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("getAllUser")
    public Object getAllUser() {
        return userService.getAllUser();
    }

    @RequestMapping("getUser")
    public Object getUser(String name, String pwd) {
        if (userService.getUser(name, pwd) == null) {
            //账号密码错误
            return "登录失败";
        }
        //登陆成功的操作
        String taken = UUID.randomUUID().toString();
        System.out.println("taken=" + taken);
        return userService.getUser(name, pwd);
    }

    @RequestMapping("saveUser")
    public Object saveUser(int id, String name, String pwd) {
        return userService.saveUser(id, name, pwd);
    }

    @RequestMapping("updateUser")
    public Object updateUser(int id, String name, String pwd) {
        return userService.updateUser(id, name, pwd);
    }

    @RequestMapping("deleteUser")
    public Object deleteUser(int id) {
        return userService.deleteUser(id);
    }


}

Service包中的UserService代码如下:

package com.zsx.sso0311.service;

import com.zsx.sso0311.model.User;

import java.util.List;

public interface UserService {
    //查
    List<User> getAllUser();

    User getUser(String name, String pwd);

    //增
    int saveUser(int id, String name, String pwd);
    //改
    int updateUser(int id, String name, String pwd);
    //删
    int deleteUser(int id);

}

serviceimpl包中的UserServiceImpl代码如下:

package com.zsx.sso0311.service.servceimpl;

import com.zsx.sso0311.dao.UserMapper;
import com.zsx.sso0311.model.User;
import com.zsx.sso0311.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> getAllUser() {
        return userMapper.getAllUser();
    }

    @Override
    public User getUser(String name, String pwd) {
        return userMapper.getUser(name, pwd);
    }

    @Override
    public int saveUser(int id, String name, String pwd) {
        return userMapper.saveUser(id, name, pwd);
    }

    @Override
    public int updateUser(int id, String name, String pwd) {
        return userMapper.updateUser(id, name, pwd);
    }

    @Override
    public int deleteUser(int id) {
        return userMapper.deleteUser(id);
    }
}

Model包的User代码如下:

package com.zsx.sso0311.model;

public class User {
    private int id;   //用户唯一标识ID
    private String name;  //用户登录名
    private String pwd;  //用户密码
    private String state;  //用户状态
    private String ssoClient;  //来自登录请求的某应用系统标识
    private String globalId;  //本次登录成功的全局会话sessionId


    public User() {
    }

    public User(int id, String name, String pwd, String state) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
        this.state = state;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getSsoClient() {
        return ssoClient;
    }

    public void setSsoClient(String ssoClient) {
        this.ssoClient = ssoClient;
    }

    public String getGlobalId() {
        return globalId;
    }

    public void setGlobalId(String globalId) {
        this.globalId = globalId;
    }
}

dao包中的UserMapper的代码如下:

package com.zsx.sso0311.dao;

import com.zsx.sso0311.model.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {
    //用户方法
    //查
    //获取全部用户
    @Select("SELECT * FROM \"user\" ")
    @Results({
            @Result(property = "id",column="id"),
            @Result(property = "name",column="name"),
            @Result(property = "pwd",column="pwd"),
            @Result(property = "state",column="state")
    })
    List<User> getAllUser();

    //获取单个用户
    @Select("SELECT * FROM \"user\" where name=#{name} and pwd=#{pwd}")
    @Results({
            @Result(property = "id",column="id"),
            @Result(property = "name",column="name"),
            @Result(property = "pwd",column="pwd"),
            @Result(property = "state",column="state")
    })
    User getUser(String name,String pwd);

    //增
    @Insert("insert into \"user\" (id,name,pwd,state) values(#{id},#{name},#{pwd},1)")
    int saveUser(int id,String name,String pwd);

    //改
    @Update("update \"user\" set name=#{name},pwd=#{pwd} where id=#{id}")
    int updateUser(int id,String name,String pwd);

    //删
    @Delete("delete from \"user\" where id=#{id}")
    int deleteUser(int id);

}

以上就是SSM框架的大抵实现流程。(基于SSM的增删改查已上传至 https://download.csdn.net/download/it_java_roy/11011334
关于Mapper的实现还有另一种版本。是将Mapper.java文件分为Mapper.java+Mapper.xml
大抵样式如下:(注:这种写法对于上文中的controller+service+model没有丝毫影响,但展示的代码跟上文没有关联,仅做参考。具体项目代码详见本人上传至 https://download.csdn.net/download/it_java_roy/11005010
Mapper.java代码如下

package com.crow.dao;

import org.apache.ibatis.annotations.Param;

import bean.User;

public interface UserLoginMapper {
	// 用户登录
	User login(@Param("userName") String userName, @Param("userPwd") String userPwd);

	// 充值
	int charge(@Param("userId") int userId, @Param("userMoney") int userMoney);

	// 找钱
	int findMoney(@Param("userId") int userId);



	// 修改密码
	int updatePwd(@Param("userId") int userId, @Param("userPwd") String userPwd);

	// 查询信誉
	User backtrack(@Param("userName") String userName);
}

Mapper.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
	"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="com.crow.dao.UserLoginMapper">
	<resultMap type="bean.User" id="userLogin">
		<result column="US_ID" property="usId" />
		<result column="RO_ID" property="roId" />
		<result column="US_ACCOUNT" property="usAccount" />
		<result column="US_PWD" property="usPwd" />
		<result column="US_PHONE" property="usPhone" />
		<result column="US_CARDID" property="usCardId" />
		<result column="US_SEX" property="usSex" />
		<result column="US_ADDR" property="usAddr" />
		<result column="US_MAIL" property="usMail" />
		<result column="US_MONEY" property="usMoney" />
		<result column="US_SCORE" property="usScore" />
		<result column="US_STATE" property="usState" />
		<result column="US_TYPE" property="usType" />
		<result column="UN_ID" property="unId" />
		<result column="US_INT" property="usInt" />
		<result column="US_CTIME" property="usCtime" />
		<result column="US_MTIME" property="usMtime" />
		<result column="US_MEMO" property="usMemo" />
	</resultMap>
	<!--登录 -->
	<select id="login" resultMap="userLogin">
		SELECT * FROM USER_INF WHERE US_PHONE=#{userName} AND US_PWD =#{userPwd}
	</select>

	<select id="findMoney" resultType="java.lang.Integer">
		SELECT US_MONEY FROM USER_INF WHERE US_ID=#{userId}
	</select>

	<update id="charge">
		UPDATE USER_INF SET US_MONEY =#{userMoney} WHERE US_ID=#{userId}
	</update>

	<!--修改密码 -->
	<update id="updatePwd">
		UPDATE USER_INF SET US_PWD =#{userPwd} WHERE US_ID=#{userId}
	</update>
	<!--查询信誉 -->
	<select id="backtrack" resultMap="userLogin">
		SELECT * FROM USER_INF WHERE US_ACCOUNT=#{userName}
	</select>
</mapper>  

Mapper的两种写法原理是一样的。不过基于简介考虑,建议使用第一种写法。
我也见过不少将Service和ServiceImpl直接整合不做拆分的。其实是殊途同归,毕竟每个人写法,习惯不一。

猜你喜欢

转载自blog.csdn.net/IT_Java_Roy/article/details/88610265
今日推荐