spring boot 2.0完美整合mybatis注解版 加上redis储存数据 配上freemarker模板 实现用户的登录注册
首先导入pom文件
<?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.lm.spring-boot</groupId>
<artifactId>spring-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
项目结构
1.controller类
package com.lm.controller;
import com.lm.model.User;
import com.lm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index(Model model) {
model.addAttribute("www","--------------欢迎登录注册-----------------");
return "user/login";
}
@RequestMapping(value = "/reg", method = RequestMethod.GET)
public String register() {
return "/user/reg";
}
@RequestMapping(value = "/success", method = RequestMethod.GET)
public String success(Model model) {
//List<User> userList = userService.findAll();
//model.addAttribute("userList", userList);
Object user2=redisTemplate.opsForValue().get("user1");
model.addAttribute("user2",user2);
Object message = redisTemplate.opsForValue().get("message");
model.addAttribute("message",message);
return "/user/success";
}
@RequestMapping(value = "/fail", method = RequestMethod.GET)
public String fail() {
return "/user/fail";
}
@RequestMapping(value = "/registerFail", method = RequestMethod.GET)
public String registerFail() {
return "/user/registerFail";
}
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(ModelMap map) {
List<User> userList = userService.findAll();
map.addAttribute("userList", userList);
return "/user/list";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(User user,Model model) {
System.out.println("==================user.getUsername()========================"+user.getUsername());
if (user.getUsername() != null & user.getPassword() != null) {
System.out.println("==================user.getPassword()========================"+user.getPassword());
User user1 = userService.doLogin(user.getUsername(),user.getPassword());
System.out.println("=================user1=========================;"+user1);
redisTemplate.opsForValue().set("user1",user1);
if (user1 != null) {
redisTemplate.opsForValue().set("message","登录成功");
return "redirect:/user/success";
}else {
return "redirect:/user/fail";
}
}
return null;
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String doRegister(Model model,User user) {
User user1 = userService.selectRegister(user.getUsername());
if (user1 == null) {
redisTemplate.opsForValue().set("message", "注册成功");
int insert = userService.insert(user.getUsername(), user.getPassword(), user.getEmail());
return "redirect:/user/success";
} else {
return "redirect:/user/registerFail";
}
}
}
mapper类
package com.lm.dao;
import com.lm.model.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("select id, username,password,email from t_user")
List<User> findAll();
@Select("select id,username,password ,email from t_user where username=#{username} and password = #{password}")
User doLogin(@Param("username")String username ,@Param("password")String password);
@Insert("insert into t_user (username,password ,email) values(#{username},#{password},#{email})")
int doRegister( @Param("username")String username ,@Param("password")String password,@Param("email")String email);
@Select("select id,username,password ,email from t_user where username=#{username} ")
User selectRegister(@Param("username")String username );
}
UserServiceImpl类
package com.lm.service.impl;
import com.lm.dao.UserMapper;
import com.lm.model.User;
import com.lm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public User doLogin(String username, String password) {
return userMapper.doLogin(username,password);
}
@Override
public int insert(String username, String password, String email) {
return userMapper.doRegister(username,password,email);
}
@Override
public User selectRegister(String username) {
return userMapper.selectRegister(username);
}
}
实体类
package com.lm.model;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = -1L;
private Integer id;
private String username;
private String password;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
'}';
}
}
service类
package com.lm.service;
import com.lm.model.User;
import java.util.List;
public interface UserService {
List<User> findAll();
User doLogin(String username ,String password);
int insert(String username ,String password,String email);
User selectRegister(String username);
}
redis工具类
package com.lm.Utils;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
//
/**
* Created by xjg on 2018/12/12.
*/
@SuppressWarnings("SpringJavaAutowiringInspection")
@Configuration
@EnableCaching
public class Redisconfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());//设置key的序列化器
redisTemplate.setValueSerializer(new RedisConverter());//设置值的序列化器
return redisTemplate;
}
}
package com.lm.Utils;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.serializer.support.DeserializingConverter;
import org.springframework.core.serializer.support.SerializingConverter;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
public class RedisConverter implements RedisSerializer<Object> {
private Converter<Object, byte[]> serializer = new SerializingConverter();//序列化器
private Converter<byte[], Object> deserializer = new DeserializingConverter();//反序列化器
@Override
public byte[] serialize(Object o) throws SerializationException {//将对象序列化成字节数组
if (o == null) return new byte[0];
try {
return serializer.convert(o);
} catch (Exception e) {
e.printStackTrace();
return new byte[0];
}
}
@Override
public Object deserialize(byte[] bytes) throws SerializationException {//将字节数组反序列化成对象
if (bytes == null || bytes.length == 0) return null;
try {
return deserializer.convert(bytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Application类
package com.lm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages="com.lm.*")
@EnableCaching
@MapperScan("com.lm.dao")
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
输入地址 http://localhost/user/index
数据库数据
输入用户名 6 和 密码6
显示登录的用户名
导入
csdn原文下载地址