前言:Spring+SpringMVC+MyBatis实现过程展示
演示
包结构如下:
注:配置文件则根据具体需求网上自行配置,这里不做说明。
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直接整合不做拆分的。其实是殊途同归,毕竟每个人写法,习惯不一。