package com.cloud.android.spring.model;
public class User {
private int id;
private String name;
private String password;
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
}
public User(int id) {
this.id = id;
}
public User(String name) {
this.name = name;
}
public User(String name, String password) {
this.name = name;
this.password = password;
}
}
UserMapper.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="com.cloud.android.spring.model.User">
<resultMap id="UserMapper" type="com.cloud.android.spring.model.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="password" property="password"/>
</resultMap>
<select id="get" resultMap="UserMapper" parameterType="com.cloud.android.spring.model.User">
SELECT * FROM user
<where>
<if test="id != 0">
id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
</where>
</select>
<insert id="add" parameterType="com.cloud.android.spring.model.User">
INSERT INTO user(`name`, `password`) VALUES (#{name}, #{password})
</insert>
</mapper>
Dao层代码:
BaseDao.java
package com.cloud.android.spring.dao;
import java.util.List;
public interface BaseDao<T> {
public T get(String classMethod, T entry);
public List<T> getAll(String classMethod);
public boolean add(String classMethod, T entry);
public boolean edit(String classMethod, T entry);
public boolean remove(String classMethod, T entry);
}
BaseDaoImpl.java
package com.cloud.android.spring.dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import com.cloud.android.spring.dao.BaseDao;
public class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T> {
@Override
public T get(String classMethod, T entry) {
T result = null;
result = this.getSqlSession().selectOne(classMethod, entry);
return result;
}
@Override
public List<T> getAll(String classMethod) {
List<T> results = new ArrayList<T>();
results = this.getSqlSession().selectList(classMethod);
return results;
}
@Override
public boolean add(String classMethod, T entry) {
boolean flag = false;
flag = this.getSqlSession().insert(classMethod, entry) > 0 ? true : false;
return flag;
}
@Override
public boolean edit(String classMethod, T entry) {
boolean flag = false;
flag = this.getSqlSession().update(classMethod, entry) > 0 ? true : false;
return flag;
}
@Override
public boolean remove(String classMethod, T entry) {
boolean flag = false;
flag = this.getSqlSession().delete(classMethod, entry) > 0 ? true : false;
return flag;
}
}
UserDao.java
public interface UserService {
public User getUserById(int id);
public User getUserByName(String name);
public boolean addUser(String name, String password);
}
UserServiceImpl.java
package com.cloud.android.spring.service.impl;
import com.cloud.android.spring.constant.Constants;
import com.cloud.android.spring.dao.UserDao;
import com.cloud.android.spring.model.User;
import com.cloud.android.spring.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
private String className = User.class.getName();
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public User getUserById(int id) {
User user = new User(id);
return this.userDao.get(className + Constants.GET, user);
}
@Override
public User getUserByName(String name) {
User user = new User(name);
return this.userDao.get(className + Constants.GET, user);
}
@Override
public boolean addUser(String name, String password) {
boolean flag = false;
User user = new User(name, password);
flag = this.userDao.add(className + Constants.ADD, user);
return flag;
}
}
Controller层代码:
UserController.java
package com.cloud.android.spring.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.cloud.android.spring.constant.Constants;
import com.cloud.android.spring.model.Message;
import com.cloud.android.spring.model.User;
import com.cloud.android.spring.service.UserService;
import com.cloud.android.spring.util.StringUtil;
@Controller
@RequestMapping(value = "/user", method = RequestMethod.GET)
public class UserController {
@Resource
private UserService userService;
@RequestMapping(value = "/select", method = RequestMethod.GET)
@ResponseBody
public Object getUser(String id, String name, HttpServletRequest request, HttpServletResponse response) {
User user = new User();
if (StringUtil.isEmpty(id)) {
if (StringUtil.isEmpty(name)) {
return Message.noContent(null);
}
user = userService.getUserByName(name.trim());
} else {
try {
int idInt = Integer.parseInt(id);
user = userService.getUserById(idInt);
} catch (Exception e) {
return Message.error(Constants.INCORRECT_PARAMETER);
}
}
if (null == user) {
return Message.noContent(user);
}
return Message.ok(user);
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
@ResponseBody
public Object addUser(String name, String password, HttpServletRequest request, HttpServletResponse response) {
if (StringUtil.isEmpty(name) || StringUtil.isEmpty(password)) {
return Message.error(Constants.INCORRECT_PARAMETER);
}
boolean status = userService.addUser(name, password);
if (status) {
return Message.ok(Constants.SUCCESS);
}
return Message.noContent(Constants.FAILED);
}
}
常量类:
Constants.java
package com.cloud.android.spring.constant;
public class Constants {
// The parameters
public static String ID = "id";
public static String NAME = "name";
// String value
public static String EMPTY = "";
public static String INCORRECT_PARAMETER = "Incorrect parameter.";
// Sql flag
public static String ADD = ".add";
public static String EDIT = ".edit";
public static String REMOVE = ".remove";
public static String GET = ".get";
public static String GET_ALL = ".getAll";
// Operate status
public static String SUCCESS = "success";
public static String FAILED = "failed";
}
工具类:
StringUtil.java
package com.cloud.android.spring.util;
import com.cloud.android.spring.constant.Constants;
public class StringUtil {
public static boolean isEmpty(String str) {
if (null == str || Constants.EMPTY.equals(str)) {
return true;
}
return false;
}
}
还有一个用于包装JSON的类:
Message.java
package com.cloud.android.spring.model;
import java.util.HashMap;
import java.util.Map;
public class Message {
private static String DATA = "data";
private static String STATUS = "status";
public static Object ok(Object obj) {
Object result = dealWithMessage(obj, 200);
return result;
}
public static Object error(Object obj) {
Object result = dealWithMessage(obj, 500);
return result;
}
public static Object noContent(Object obj) {
Object result = dealWithMessage(obj, 204);
return result;
}
private static Object dealWithMessage(Object obj, int status) {
Map<String, Object> result = new HashMap<String, Object>();
result.put(DATA, obj);
result.put(STATUS, status);
return result;
}
}