整合步骤
以User业务为例
1.建立pojo实体类,继续建立UserMapper.java接口以及对应的UserMapper.xml(规则要求前面的博文已经讲过)
2.准备工具类
MyBatisUtil.java(自己编写)
public class MyBatisUtil {
private static SqlSessionFactory factory;
// 通过静态代码块创建会话工厂
static{
try {
factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 方法描述:获得会话工厂
* @return
*/
public static SqlSessionFactory getSqlSessionFactory(){
return factory;
}
}
3.编写service层接口及实现类
此处给出UserServiceImpl.java
public class UserServiceImpl implements UserService {
// 注入会话工厂,通过会话工厂得到Mapper,
private SqlSessionFactory factory =MyBatisUtil.getSqlSessionFactory();
@Override
public User login(User user) {
// 获取会话
SqlSession sqlSession = factory.openSession();
// 创建代理对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 使用mapper对象调用方法执行操作
User result = mapper.findUserByNameAndPwd(user);
// 释放资源
sqlSession.close();
return result;
}
@Override
public List<User> findAllUser() {
// 获取会话
SqlSession sqlSession = factory.openSession();
// 创建代理对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 使用mapper对象调用方法执行操作
List<User> allUser = mapper.findAllUser();
// 释放资源
sqlSession.close();
return allUser;
}
}
4.编写UserServlet
package com.hpe.servlet;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hpe.po.User;
import com.hpe.service.UserService;
import com.hpe.service.impl.UserServiceImpl;
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserService userService = new UserServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置编码格式及响应的内容类型
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String action = request.getParameter("action");
try {
Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this, request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
// 登录
public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 得到用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 封装User对象
User user = new User();
user.setUsername(username);
user.setPassword(password);
// 调用UserServlet中的login方法
User currUser = userService.login(user);
if (currUser != null) {
// 登录成功,将用户信息添加到session域
request.getSession().setAttribute("user", currUser);
// 查询所有用户
response.sendRedirect(request.getContextPath()+"/UserServlet?action=selectAll");
}else {
// 登录失败
request.setAttribute("msg", "<script>alert('用户名或密码错误')</script>");
// 请求转发到登录页面
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
// 查询所有用户
public void selectAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> users = userService.findAllUser();
request.getSession().setAttribute("users", users);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}