整合步驟
以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);
}
}