用spring+mybatis方式实现用户注册和登录,没有用springmvc、springboot等框架;
idea版本号:2020.1
流程图
目录结构
基础配置文件
pom.xml (springParent2)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sxg</groupId>
<artifactId>springParent2</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>spring-web</module>
</modules>
<name>springParent2</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<junit.version>4.11</junit.version>
<spring.version>5.2.5.RELEASE</spring.version>
<cglib.version>3.2.5</cglib.version>
<mybatis.version>3.4.6</mybatis.version>
<mybatis-spring.version>1.3.2</mybatis-spring.version>
<javax.servlet-api.version>3.1.0</javax.servlet-api.version>
<jsp-api.version>2.2</jsp-api.version>
<jstl.version>1.2</jstl.version>
<mysql-connector-java.version>8.0.15</mysql-connector-java.version>
<commons-dbcp.version>1.4</commons-dbcp.version>
<druid.version>1.1.10</druid.version>
<hibernate-validator.version>6.1.0.Final</hibernate-validator.version>
<jackson-databind.version>2.10.0</jackson-databind.version>
<gson.version>2.8.5</gson.version>
<fastjson.version>1.2.62</fastjson.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<jedis.version>3.3.0</jedis.version>
<shiro-core.version>1.4.0</shiro-core.version>
<tomcat7-maven-plugin.version>2.2</tomcat7-maven-plugin.version>
</properties>
<dependencyManagement>
<!-- 父工程里,dependencies标签要放在dependencyManagement标签里面,否则子工程无法继承 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- spring ioc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>${cglib.version}</version>
</dependency>
<!-- spring整合web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring整合jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring整合mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Java EE -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- DataSource -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<!-- hibernate validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>${hibernate-validator.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<!-- 父工程里,plugins标签要放在pluginManagement标签里面,否则子工程可能无法继承 -->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${tomcat7-maven-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
pom.xml (spring-web)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.sxg</groupId>
<artifactId>springParent2</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-web</artifactId>
<packaging>war</packaging>
<name>spring-web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<!-- spring ioc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
<!-- spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</dependency>
<!-- spring整合web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- spring整合jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<!-- spring整合mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<!-- Java EE -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- DataSource -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
<build>
<finalName>spring-web</finalName>
<!-- 子工程里,plugins标签不能放在pluginManagement里面,否则maven窗口里插件刷新后不出来 -->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
web.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_3_1.xsd"
version="3.1">
<!-- 初始化spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 解决post请求中文乱码-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
spring.xml
注意配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 扫描包 -->
<context:component-scan base-package="com.sxg.service.impl"/>
<!-- IoC容器工具类 -->
<bean class="com.sxg.util.SpringBeanHolder"/>
<!-- 读取属性文件 -->
<context:property-placeholder location="classpath:dataSource.properties"/>
<!-- 配置DataSource -->
<!-- 使用druid -->
<bean id="dataSourceDruid" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="${jdbc.initialSize}"/>
<property name="maxActive" value="100"/>
<property name="minIdle" value="3"/>
<property name="maxIdle" value="20"/>
<property name="maxWait" value="5000"/>
</bean>
<!-- 配置jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSourceDruid"/>
</bean>
<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourceDruid"/>
<!-- 指定映射文件的路径 -->
<property name="mapperLocations" value="classpath:com/sxg/mapper/*Mapper.xml"/>
<!-- 为映射类指定别名 -->
<property name="typeAliasesPackage" value="com.sxg.entity"/>
</bean>
<!-- 通过反射创建Dao实现,并添加到IOC容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定SqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 指定接口所在的包 -->
<property name="basePackage" value="com.sxg.dao"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceDruid"/>
</bean>
<!-- 注解驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
SpringBeanHolder.java
SpringBeanHolder在ioc容器中注册,tomcat初始化ioc容器的时候,ioc容器会把ioc容器交给SpringBeanHolder,
等到action中的UserServlet类需要调用ioc容器中的bean时,例如*serviceImpl,就直接通过SpringBeanHolder留出的接口来获取;
package com.sxg.util;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* Author: sxg
* Date: 2020-06-09 18:18
* description:
*/
public class SpringBeanHolder implements ApplicationContextAware {
private static ApplicationContext ac;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ac = applicationContext;
}
public static Object getBean(String beanName) {
return ac.getBean(beanName);
}
public static <T> T getBean(Class<T> clazz) {
return ac.getBean(clazz);
}
}
view
regist.jsp
<%--
User: sxg
Date: 2020.06.02
Time: 15:41
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<script>
console.log("${pageContext.request.contextPath}");
let str=Math.floor(Date.now())+'1';
</script>
<h3>注册</h3>
<form action="${pageContext.request.contextPath}/regist.user" method="post">
<h4>个人信息</h4>
用户名:<input type="text" name="username" value="a"><br/>
密码:<input type="password" name="password" value="a"><br/>
确认密码:<input type="password" name="repassword" value="a"><br/>
性别:<input type="text" name="sex" value="a"><br/>
生日:<input type="text" name="birthday" value="a"><br/>
<br/><br/>
<h4>学历</h4>
学校:<input type="text" name="school" value="a"><br/>
学历:<input type="text" name="degreelevel" value="a"><br/>
毕业时间:<input type="text" name="graduationdate" value="a"><br/>
<input type="submit" value="注册">
</form>
</body>
</html>
login.jsp
<%--
User: sxg
Date: 2020.06.02
Time: 15:41
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>登录</h3>
<h5>${err}</h5>
<form action="${pageContext.request.contextPath}/login.user" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="登录">
</form>
</body>
</html>
success.jsp
<%--
User: sxg
Date: 2020.06.02
Time: 15:41
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<script>
console.log('..............');
console.log(${uservo});
</script>
${uservo.username} 登录成功
<br/><br/>
<form>
用户名:${uservo.username}<br/>
生日:${uservo.birthday}<br/>
性别:${uservo.sex}<br/>
<br/><br/>
学校:${uservo.school}<br/>
学历:${uservo.degreelevel}<br/>
毕业时间:${uservo.graduationdate}<br/>
</form>
</body>
</html>
index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
action
UserServlet.java
package com.sxg.action;
import com.sxg.service.UserService;
import com.sxg.util.SpringBeanHolder;
import com.sxg.vo.UserVo;
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;
/**
* Author: sxg
* Date: 2020-06-09 17:51
* description:
*/
@WebServlet("*.user")
public class UserServlet extends HttpServlet {
private UserService userService;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path = req.getServletPath();
if ("/login.user".equals(path)) {
req.getRequestDispatcher("WEB-INF/view/login.jsp").forward(req, resp);
} else if ("/regist.user".equals(path)) {
System.out.println("/regist.user");
req.getRequestDispatcher("WEB-INF/view/regist.jsp").forward(req, resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path = req.getServletPath();
if ("/login.user".equals(path)) {
login(req, resp);
} else if ("/regist.user".equals(path)) {
System.out.println("post: /regist.user");
regist(req, resp);
}
}
private void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
userService = (UserService) SpringBeanHolder.getBean("userService");
UserVo userVo = userService.login(username, password);
if (userVo != null) {
req.getSession().setAttribute("uservo", userVo);
req.setAttribute("uservo", userVo);
req.getRequestDispatcher("WEB-INF/view/success.jsp").forward(req, resp);
}else{
req.setAttribute("err", "登录失败,用户名或密码错误");
req.getRequestDispatcher("WEB-INF/view/login.jsp").forward(req, resp);
}
}
private void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
String birthday = req.getParameter("birthday");
String sex = req.getParameter("sex");
String school = req.getParameter("school");
String degreelevel = req.getParameter("degreelevel");
String graduationdate = req.getParameter("graduationdate");
UserVo userVo = new UserVo(username, password, birthday, sex, school, degreelevel, graduationdate);
userService = (UserService) SpringBeanHolder.getBean("userService");
userService.regist(userVo);
req.getRequestDispatcher("WEB-INF/view/login.jsp").forward(req, resp);
}
}
service
UserService
package com.sxg.service;
import com.sxg.vo.UserVo;
/**
* Author: sxg
* Date: 2020-06-09 17:41
* description:
*/
public interface UserService {
public UserVo login(String username, String password);
public void regist(UserVo userVo);
}
impl.UserServiceImpl
package com.sxg.service.impl;
import com.sxg.dao.SchoolDao;
import com.sxg.dao.UserDao;
import com.sxg.entity.School;
import com.sxg.entity.User;
import com.sxg.service.UserService;
import com.sxg.vo.UserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* Author: sxg
* Date: 2020-06-09 17:43
* description:
*/
@Service("userService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Autowired
private SchoolDao schoolDao;
@Override
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public UserVo login(String username, String password) {
User user = userDao.selectByUsername(username);
School school = schoolDao.selectByUserid(user.getId());
UserVo userVo = new UserVo();
userVo.setUsername(user.getUsername());
userVo.setBirthday(user.getBirthday());
userVo.setSex(user.getSex());
if (school != null) {
userVo.setSchool(school.getSchool());
userVo.setDegreelevel(school.getDegreelevel());
userVo.setGraduationdate(school.getGraduationdate());
}
if (user != null) {
if (user.getPassword().equals(password)) {
return userVo;
}
}
return null;
}
@Override
public void regist(UserVo userVo) {
User user = new User();
user.setUsername(userVo.getUsername());
user.setPassword(userVo.getPassword());
user.setBirthday(userVo.getBirthday());
user.setSex(userVo.getSex());
int reValue = userDao.insert(user);
System.out.println("用户信息是否插入成功:"+reValue);
System.out.println("User id:"+user.getId());
School school = new School(user.getId(), userVo.getSchool(), userVo.getDegreelevel(), userVo.getGraduationdate());
int reValueSchool = schoolDao.insert(school);
System.out.println("学校信息是否插入成功:"+reValueSchool);
System.out.println("School id:"+school.getId());
}
}
mapper
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.sxg.dao.UserDao">
<sql id="user_column">
id,
username,
password,
birthday,
sex
</sql>
<select id="selectByUsername" parameterType="string" resultType="User">
select <include refid="user_column"/>
from t_user
where username=#{username}
</select>
<insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into t_user
(username, password, birthday,sex)
values
(#{username}, #{password}, #{birthday}, #{sex});
</insert>
</mapper>
UserMapper
package com.sxg.mapper;
import com.sxg.entity.User;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Author: sxg
* Date: 2020-06-09 17:14
* description:
*/
public class UserMapper implements RowMapper {
@Override
public Object mapRow(ResultSet resultSet, int i) throws SQLException {
return new User(
resultSet.getInt("id"),
resultSet.getString("username"),
resultSet.getString("password"),
resultSet.getString("birthday"),
resultSet.getString("sex")
);
}
}
SchoolMapper.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.sxg.dao.SchoolDao">
<sql id="school_column">
id,
userid,
school,
degreelevel,
graduationdate
</sql>
<select id="selectByUserid" parameterType="Integer" resultType="School">
select <include refid="school_column"/>
from t_school
where userid=#{userid}
</select>
<insert id="insert" parameterType="School" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into t_school
(userid, school, degreelevel, graduationdate)
values
(#{userid}, #{school}, #{degreelevel}, #{graduationdate})
</insert>
</mapper>
SchoolMapper
package com.sxg.mapper;
import com.sxg.entity.School;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Author: sxg
* Date: 2020-06-10 15:05
* description:
*/
public class SchoolMapper implements RowMapper {
@Override
public Object mapRow(ResultSet resultSet, int i) throws SQLException {
return new School(
resultSet.getInt("id"),
resultSet.getInt("userid"),
resultSet.getString("school"),
resultSet.getString("degreelevel"),
resultSet.getString("graduationdate")
);
}
}
dao
UserDao
package com.sxg.dao;
import com.sxg.entity.User;
/**
* Author: com.sxg
* Date: 2020-06-09 14:55
* description:
*/
public interface UserDao {
public User selectByUsername(String username);
public int insert(User user);
}
SchoolDao
package com.sxg.dao;
import com.sxg.entity.School;
/**
* Author: sxg
* Date: 2020-06-10 14:43
* description:
*/
public interface SchoolDao {
public School selectByUserid(Integer userid);
public int insert(School school);
}
daoImpl
UserDaoMybatisImpl
package com.sxg.dao.impl;
import com.sxg.dao.UserDao;
import com.sxg.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* Author: com.sxg
* Date: 2020-06-09 14:57
* description:
*/
@Repository
public class UserDaoMybatisImpl implements UserDao {
@Autowired
private SqlSessionFactory sessionFactory;
@Override
public User selectByUsername(String username) {
SqlSession sqlSession = sessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
return userDao.selectByUsername(username);
}
@Override
public int insert(User user) {
SqlSession sqlSession = sessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
int reValue = userDao.insert(user);
return reValue;
}
}
SchoolDaoMybatisImpl
package com.sxg.dao.impl;
import com.sxg.dao.SchoolDao;
import com.sxg.entity.School;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* Author: sxg
* Date: 2020-06-10 14:45
* description:
*/
@Repository
public class SchoolDaoMybatisImpl implements SchoolDao {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Override
public School selectByUserid(Integer userid) {
SqlSession sqlSession = sqlSessionFactory.openSession();
SchoolDao schoolDao = sqlSession.getMapper(SchoolDao.class);
School school = schoolDao.selectByUserid(userid);
return school;
}
@Override
public int insert(School school) {
SqlSession sqlSession = sqlSessionFactory.openSession();
SchoolDao schoolDao = sqlSession.getMapper(SchoolDao.class);
int id = schoolDao.insert(school);
return id;
}
}
vo
UserVo
package com.sxg.vo;
/**
* Author: com.sxg
* Date: 2020-06-09 14:54
* description:
*/
public class UserVo {
private String username;
private String password;
private String birthday;
private String sex;
private String school;
private String degreelevel;
private String graduationdate;
public UserVo() {
}
public UserVo(String username, String password, String birthday, String sex, String school, String degreelevel, String graduationdate) {
this.username = username;
this.password = password;
this.birthday = birthday;
this.sex = sex;
this.school = school;
this.degreelevel = degreelevel;
this.graduationdate = graduationdate;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getDegreelevel() {
return degreelevel;
}
public void setDegreelevel(String degreelevel) {
this.degreelevel = degreelevel;
}
public String getGraduationdate() {
return graduationdate;
}
public void setGraduationdate(String graduationdate) {
this.graduationdate = graduationdate;
}
}
entity
User
package com.sxg.entity;
import java.io.Serializable;
/**
* Author: com.sxg
* Date: 2020-06-09 14:53
* description:
*/
public class User implements Serializable {
private Integer id;
private String username;
private String password;
private String birthday;
private String sex;
public User() {
}
public User(Integer id, String username, String password, String birthday, String sex) {
this.id = id;
this.username = username;
this.password = password;
this.birthday = birthday;
this.sex = sex;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
School
package com.sxg.entity;
/**
* Author: sxg
* Date: 2020-06-10 14:43
* description:
*/
public class School {
private Integer id;
private Integer userid;
private String school;
private String degreelevel;
private String graduationdate;
public School() {
}
public School(Integer id, Integer userid, String school, String degreelevel, String graduationdate) {
this.id = id;
this.userid = userid;
this.school = school;
this.degreelevel = degreelevel;
this.graduationdate = graduationdate;
}
public School(Integer userid, String school, String degreelevel, String graduationdate) {
this.userid = userid;
this.school = school;
this.degreelevel = degreelevel;
this.graduationdate = graduationdate;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getDegreelevel() {
return degreelevel;
}
public void setDegreelevel(String degreelevel) {
this.degreelevel = degreelevel;
}
public String getGraduationdate() {
return graduationdate;
}
public void setGraduationdate(String graduationdate) {
this.graduationdate = graduationdate;
}
}
resources
create.sql
create database spring;
use spring;
drop table if exists t_user;
create table t_user(
id int primary key auto_increment,
username varchar(255) not null unique ,
password varchar(255),
birthday varchar(255),
sex varchar(255)
)engine=Innodb default charset=utf8;
drop table if exists t_school;
create table t_school(
id int primary key auto_increment,
userid int unique not null,
school varchar(255),
degreelevel varchar(255),
graduationdate varchar(255)
)engine=Innodb default charset=utf8;
dataSource.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring?useUnicode=true&serverTimezone=UTC&characterEncoding=utf8
jdbc.username=root
jdbc.password=***
jdbc.initialSize=5
log4j.properties
log4j.roogLogger=debug,hello
log4j.appender.hello=org.apache.log4j.ConsoleAppender
log4j.appender.hello.layout=org.apache.log4j.SimpleLayout
配置tomcat和mysql
配置tomcat插件
选中spring-web工程,按刷新按钮,插件就出来了;
双击run运行tomcat
手动打开浏览器,输入网址访问
配置本地tomcat
如果tomcat插件配置失败了,就直接配置的系统的tomcat。
war exploded结尾的支持热启动;
在idea配置MySQL
第一次配置要在界面上点“Download”下载驱动jar包;
运行
启动tomcat插件
注册
成功后直接跳转到登录界面;
mysql表
登录
登录成功后显示个人信息和学校信息;