分层思想+mybatis相关的集成 - yuanse - 博客园 (cnblogs.com)
test6602
先把一些固定的配置文件先导入进来,比如说像mybatis-config.xml、mysql.properties等(自己根据需要修改)
1.UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!--<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"--> <!-- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"--> <!-- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"--> <!-- version="4.0">--> <!--</web-app>--> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace:命名空间--> <mapper namespace = "com.xxxx.mapper.UserMapper"> <!-- id:对应Dao层接口方法名 paraterType:指定输入参数类型 --> <!-- userGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中--> <select id="queryUserByName" parameterType="String" resultType="com.xxxx.entity.User"> select * from tb_user where uname = #{uname} </select> </mapper>
2.UserMapper.java
package com.xxxx.mapper; import com.xxxx.entity.User; /** *用户接口类 */ public interface UserMapper { public User queryUserByName(String uname); }
3.GetSqlSession.java
package com.xxxx.util; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class GetSqlSession { /** * 获取SqlSession对象 */ public static SqlSession createSqlSession(){ SqlSessionFactory sqlSessionFactory=null; InputStream input=null; SqlSession session=null; try{ //获取mybatis的环境配置文件 注意路径 String resource = "mybatis-config.xml"; //以流的方式获取resource(mybatis的环境配置文件) input = Resources.getResourceAsStream(resource); //创建会话工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(input); //通过工厂得到SqlSession session = sqlSessionFactory.openSession(); return session; }catch(IOException e){ e.printStackTrace(); return null; } } //测试:能出结果,就配置完成了 // public static void main(String[] args) { // System.out.println(createSqlSession()); // } }
4.mybatis-config.xml
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- properties 标签中的配置可以供整个配置文件使用,在任何位置都可以引入其中配置的值。 properties 标签可以通过子标签 property 标签来配置一些子元素信息,也可以配置外部的动态文件。 --> <properties resource="mysql.properties"/> <!-- 也可以配置 url,但是 url和resource只能存在一个 --> <!-- 类型别名 --> <!-- <typeAliases>--> <!-- <typeAlias type="com.xxxx.entity.User" alias="User"/>--> <!-- </typeAliases>--> <!-- 对事物的管理和连接池的配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!--mappers映射器--> <mappers> <!--映射文件方式1.一个一个的配置--> <!-- <mapper resource="com/xxxx/mapper/UserMapper.xml"/>--> <!-- <mapper class="com.xxxx.mapper.UserMapper"/>--> <!--映射文件方式2.自动扫描包内的Mapper接口和配置文件--> <package name="com.xxxx.mapper"/> </mappers> </configuration>
5.mysql.properties
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/course?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8 username=root password=123456
6.Test.java(可要可不要,用来测试)
package com.xxxx.test; import com.xxxx.entity.User; import com.xxxx.mapper.UserMapper; import com.xxxx.util.GetSqlSession; import org.apache.ibatis.session.SqlSession; public class Test { public static void main(String[] args) { //获取 SqlSession对象 SqlSession session = GetSqlSession.createSqlSession(); //得到对应的Mapper UserMapper userMapper = session.getMapper(UserMapper.class); //调用方法,返回用户对象 User user = userMapper.queryUserByName("admin"); System.out.println(user); } }
7.StringUtil.java(因为经常要判断字符串是否为空)
package com.xxxx.util; /** * 字符串工具类 */ public class StringUtil { //判断字符串是否为空注意:要写static public static boolean isEmpty(String str){ if(str==null||"".equals(str.trim())){ return true; } return false; } }
8.User.java(实体类)
package com.xxxx.entity; /** * 用户实体类 */ public class User { private Integer uid;//用户编号 private String uname;//用户名字 private String upwd;//用户密码 private Integer uage;//用户年龄 public User(Integer uid, String uname, String upwd, Integer uage) { this.uid = uid; this.uname = uname; this.upwd = upwd; this.uage = uage; } public User() { } public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getUpwd() { return upwd; } public void setUpwd(String upwd) { this.upwd = upwd; } public Integer getUage() { return uage; } public void setUage(Integer uage) { this.uage = uage; } }
9.MessageModel.java(消息模型实体类)
package com.xxxx.entity.vo; /** * 消息模型对象(做数据响应的) * 状态码: * 1=成功 0=失败 * 提示信息: * 字符串 * 回显数据: * object对象 */ public class MessageModel { private Integer code = 1;//状态码默认 private String msg = "成功";//提示信息 private Object object;//回显对象() public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } }
10.UserServlet.java
package com.xxxx.controller; import com.xxxx.entity.vo.MessageModel; import com.xxxx.service.UserService; 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 java.io.IOException; @WebServlet("/loginServlet") public class UserServlet extends HttpServlet { //实例化UserService对象 private UserService userService = new UserService(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取jsp表单信息 1.接收参数 String uname = request.getParameter("uname"); String upwd = request.getParameter("upwd"); //2.调用Service层方法,返回消息模型对象 MessageModel messageModel = userService.userlogin(uname,upwd); //3.判断消息模型的状态码 if(messageModel.getCode()==1){ //成功:将消息模型中的用户消息设置到session作用域中,重定向跳转到index.jsp request.getSession().setAttribute("user",messageModel.getObject()); //重定向 response.sendRedirect("index.jsp"); }else{ //将整个消息模型设置到request作用域中,请求转发到login.jsp中 request.setAttribute("messageModel",messageModel); request.getRequestDispatcher("login.jsp").forward(request,response); } } }
11.UserService.java
package com.xxxx.service; import com.xxxx.entity.User; import com.xxxx.entity.vo.MessageModel; import com.xxxx.mapper.UserMapper; import com.xxxx.util.GetSqlSession; import com.xxxx.util.StringUtil; import org.apache.ibatis.session.SqlSession; /** * 业务逻辑 */ public class UserService { public MessageModel userlogin(String uname,String upwd) { MessageModel messageModel = new MessageModel(); //设置回显数据 User u = new User(); u.setUname(uname); u.setUpwd(upwd); messageModel.setObject(u); //1.参数的非空判断(建议写个工具类,因为要经常调用) if(StringUtil.isEmpty(uname)||StringUtil.isEmpty(upwd)){ //设置状态码等信息 messageModel.setCode(0); messageModel.setMsg("用户姓名和密码不能为空"); return messageModel; } //2.调用dao层的查询方法,通过用户名查询用户对象 SqlSession session = GetSqlSession.createSqlSession(); UserMapper userMapper = session.getMapper(UserMapper.class); User user = userMapper.queryUserByName(uname); //3.判断用户对象是否为空 if(user==null){ messageModel.setCode(0); messageModel.setMsg("用户不存在"); return messageModel; } //4.比较密码 if(!upwd.equals(user.getUpwd())){ messageModel.setCode(0); messageModel.setMsg("用户密码不正确"); return messageModel; } //5.如果走到这一步,就说明前面都没有错,登录成功->将用户信息设置到消息模型中 messageModel.setObject(user); return messageModel; } }
12.login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录页面</title> </head> <body> <div align="center"> <form method="post" action="loginServlet" id="loginForm" > 姓名:<input type="text" name="uname" id="uname" value="${messageModel.object.uname}"><br> 密码:<input type="password" name="upwd" id="upwd" value="${messageModel.object.upwd}"><br> <span id="msg" style="font-size: 12px;color: red">${messageModel.msg}</span><br> <button type="button" id="loginBtn">登录</button> <button type="button">注册</button><br> </form> </div> </body> <script type="text/javascript" src="js/jquery-3.6.1.js"></script> <script type="text/javascript"> $("#loginBtn").click(function(){ var uname=$("#uname").val(); var upwd=$("#upwd").val(); if(isEmpty(uname)){ $("#msg").html("用户姓名不能为空"); return; } if(isEmpty(upwd)){ $("#msg").html("用户密码不能为空"); return; } $("#loginForm").submit(); } ); function isEmpty(str){ if(str==null||str.trim()==""){ return true; } return false; } </script> </html>
13.index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <h2>欢迎${user.uname}登录成功</h2> </body> </html>
标签:02,return,String,登录,uname,实例,import,com,public From: https://www.cnblogs.com/hmy22466/p/16819519.html