1. 程式人生 > >springboot整合mybatis寫一個登入註冊介面

springboot整合mybatis寫一個登入註冊介面

整個專案目錄

      

  1. pom.xml檔案
<?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>cn.xyz</groupId>
    <artifactId>springboot-mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-mybatis</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.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-jdbc</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <dependency>
           <groupId>org.mybatis.spring.boot</groupId>
           <artifactId>mybatis-spring-boot-starter</artifactId>
           <version>1.3.1</version>
       </dependency>

       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
       </dependency>

       <!--匯入druid-->
       <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid</artifactId>
           <version>1.1.8</version>
       </dependency>


       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>
       <dependency>
           <groupId>net.minidev</groupId>
           <artifactId>json-smart</artifactId>
           <version>2.2.1</version>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-thymeleaf</artifactId>
       </dependency>
   </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

建立專案是勾選了IDE會自動匯入相應的依賴,你只需要匯入druid連線池即

2. application.yml

spring:
  datasource:
    #   資料來源基本配置
    username: root
    password: 123
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    type: com.alibaba.druid.pool.DruidDataSource
    #   資料來源其他配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
mybatis:
  # 指定全域性配置檔案位置
  config-location: classpath:mybatis/mybatis-config.xml
  # 指定sql對映檔案位置
  mapperLocations: classpath:mybatis/mapper/*.xml
  typeAliasesPackage: cn.xyz.entity

3. 實體類user

package cn.xyz.entity;

import java.io.Serializable;

public class User implements Serializable {
    private String username;
    private String password;

    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;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

   4. dao層UserDao

package  cn.xyz.dao;
import cn.xyz.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserDao{

   public void inserUser(String username,String password);

   public User selectUser(String username,String password);

}

5. UserMapper.xml      注意檔案路徑與application.yml配置一致     # 指定sql對映檔案位置
  mapperLocations: classpath:mybatis/mapper/*.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="cn.xyz.dao.UserDao" >

    <!-- 查詢-->
    <select id="selectUser" resultType="cn.xyz.entity.User">
        select * from user where username = #{username} and password = #{password};
    </select>

    <!-- 新增-->
    <insert id="inserUser">
         insert user (username,password) values (#{username},#{password})
    </insert>
</mapper>

6.mybatis的總配置檔案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>

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

7. 服務層     

介面

package cn.xyz.service;

import cn.xyz.entity.User;

public interface UserService {

    public boolean inserUser(String username,String password);

    public User selectUser(String username,String password);

}

實現類

package cn.xyz.service;

import cn.xyz.dao.UserDao;
import cn.xyz.entity.User;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class UserServiceImpl{

    @Autowired
    private UserDao userDao;


    public boolean inserUser(String username, String password) {
         userDao.inserUser(username,password);
         return true;
    }

    public User selectUser(String username,String password) {
        
        System.out.println(username+" "+username);
        return userDao.selectUser(username,password);
        
    }
}

 8. 控制層

package cn.xyz.controller;

import cn.xyz.entity.User;
import cn.xyz.service.UserServiceImpl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {
    @Autowired
    private UserServiceImpl userServiceImp;

    @RequestMapping("/login")
    public String login(){
        return "login";
    }

    @RequestMapping("/regist")
    public String regist(){
        return "regist";
    }
    @RequestMapping("/dologin")
    @ResponseBody
    public String doLogin(User user,Map<String,Object> map){
        User user1 = userServiceImp.selectUser(user.getUsername(),user.getPassword());
        System.out.print(user1);
         if(user1==null){
             map.put("msg", "密碼或賬號錯誤!");
            return "fail";
         }else {
             map.put("msg", "登入成功");
             return "success";
         }
    }
    @RequestMapping("/doregist")
    public String doRegist(User user,Map<String,Object> map) {
        userServiceImp.inserUser(user.getUsername(), user.getPassword());
        map.put("msg","註冊成功");
        return "success";
    }
}

9.相應得到靜態頁面

登入介面

<head>
    <meta charset="UTF-8" />
    <title>springboot登入</title>
    <style type="text/css">
        ul li{
            list-style: none;
        }
    </style>
</head>
<body>
<div >
    <form name="form" accept-charset="utf-8"  action="/dologin">
        <ul >
            <li>
                <label  class="input-tips2">使用者名稱:</label>
                <div class="inputOuter2">
                    <input type="text" id="username" name="username" maxlength="16" />
                </div>
            </li>
            <li>
                <label class="input-tips2">密碼:</label>
                <div >
                    <input type="password" id="password"  name="password" maxlength="16"/>
                </div>
            </li>
            <li>
                <div >
                    <input type="submit" value="登入"/>
                      <a href="/regist">註冊</a>
                </div>
            </li>
        </ul>
    </form>
</div>
</body>  

註冊介面

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form name="form" accept-charset="utf-8"  action="/doregist">
        <ul >
            <li>
                <label  class="input-tips2">使用者名稱:</label>
                <div class="inputOuter2">
                    <input type="text" id="username" name="username" maxlength="16" />
                </div>
            </li>
            <li>
                <label class="input-tips2">密碼:</label>
                <div >
                    <input type="password" id="password"  name="password" maxlength="16"/>
                </div>
            </li>
            <li>
                <div >
                    <input type="submit" value="確定"/>
                 
                </div>
            </li>
        </ul>
    </form>
</body>
</html>

資訊介面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p th:text="${msg}"></p>
</body>
</html>