spring-mybatis.xml 访问html5,如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能...

利用闲余时间想自己搭建一个springboot+mybatis的项目,提升一下自己对项目的了解,毕竟自己还是一个小白,在这里为自己创建项目的过程做一个记录,以便以后回忆。同时将搭建中遇到的问题也在这里做记录。如有遇到同样问题的同学,希望能给你一下借鉴。

springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便。

一,搭建项目:

1、打开IDEA,点击File→New→Project...,如图1所示

e4db3c33949d886b30f2f4062061aa3b.png

图1  搭建项目

2、当我们选择project...后,会看见如图2所示的页面,选择Spring Initializr,点击NEXT即可。

09ff0ede081a3a9523f68713117dfc29.png

图2 搭建项目

3、接下来将看到如图3所示的页面,在这个页面中我只是修改了名称。然后点击NEXT进行下一步。

617e9b362115f5178ae8f0914e3b299c.png

图3 搭建项目

4、当我点击NEXT时,却出现如图4所示的错误,这由于创建时因为Artifact的命名为大小写混合,将大写改为小写即可正常创建。

9ceb9fe0cfcbfed310650697c00e1038.png

图4 搭建项目 (注意名称大小写问题)

5、接下来我们修改上面的错误,我将springbootTest1→springboottest1,然后进行下一步。会看见如图5所示的页面。 在当前页面中我们一次选择左侧的Web、Template Engines、SQL。然后在中间部分选择我们需要的选项,最终选择结果如最右侧所示。然后点击NEXT,进行下一步。

eae3db86c1b95ddb31723391a8852572.png

图5 搭建项目(选择需要的内容)

6、如图6所示,进人创建项目的最后一个页面,在这里我们可以修改项目保存的位置。确认自己输入的内容,点击Fiish即可完成项目的创建。

5be20a2c97771cb5580c031b0a6308df.png

图6 搭建项目(可以修改文件路径)

7、点击Finish后,出现如图7所示页面,我们选择New Window即可,即在新的IDEA中打开我们新建的项目。

2cd2d6c702d17d81c5fb0787c2452a1b.png

图7 打开项目

二、启动项目、添加配置文件等

1、打开新项目后,我们可以观察一下左侧的项目结构。如图8所示。

生成的项目中,resources文件夹下,static文件夹下存放静态文件,比如css、js、html和图片等 。

templates下存放html文件,controller默认访问该文件夹下的html文件。

这个在application.properties配置文件中是可以修改的。

3ab92085a07398051f162c2f3b66d562.png

下面为项目生成的pom.xml文件:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.example

springboottest1

0.0.1-SNAPSHOT

jar

springboottest1

Demo project for Spring Boot

org.springframework.boot

spring-boot-starter-parent

2.0.4.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

图8 项目文件结构

2、了解项目的文件结构后,我们尝试着启动项目。我们发现项目启动过程中出现错误,错误信息如图9所示。

cacf6ae46f5396d6af8bb736b19904ac.png

图9 项目启动报错

这是因为我们创建Spring Boot项目时,在选择组件时添加了mysql、mybatis,但现在还没有配置数据库,导致项目启动报错。

我们需要在项目的application.properties文件中配置数据信息。如图10所示,是我自己配置的数据库,具体情况根据自己数据库的设置配置。

24d52bfcfe1df1a9c3ab34dc93d20dad.png

图10 数据库配置

数据库采用MySQL数据库,下面是数据库的设计,只有几个简单的字段。如图11所示。

e96d6b660496610b1564ae14de8c80aa.png

图11 数据库设计

这里也可以不使用application.properties文件,采用更加简洁的application.yml文件。将resource文件夹下原有的application.properties文件删除,创建application.yml配置文件(备注:其实SpringBoot底层会把application.yml文件解析为application.properties), 文件的内容如下(此处只配置最基本的):

server:

port: 8080

spring:

datasource:

name: test

url: jdbc:mysql://127.0.0.1:3306/test

username: root

password: 123456

driver-class-name: com.mysql.jdbc.Driver

接下来再次尝试重新启动项目。发现项目可以正常启动了。可以打开浏览器访问http://localhost:8080/,访问结果如图12所示。证明项目正常启动了。

f0cfb1a9f3ae7ba3ae0fca3093b799e5.png

图12 访问结果

三、项目整合mybatis

1、在application.yml文件中添加mybatis。

server:

port: 8080

spring:

datasource:

name: test

url: jdbc:mysql://127.0.0.1:3306/test

username: root

password: 123456

driver-class-name: com.mysql.jdbc.Driver

mybatis:

mapper-locations: classpath:mapper/*.xml #注意:一定要对应mapper映射xml文件的所在路径

type-aliases-package: com.example.springboottest1.entity # 注意:对应实体类的路径

2、在pom.xml中添加 mybatis generator自动生成代码插件。

org.springframework.boot

spring-boot-maven-plugin

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.1

${basedir}/src/main/resources/generator/generatorConfig.xml

true

true

3、在resource文件夹下创建generator文件夹,并在文件夹中创建generatorConfig.xml文件。文件内容如下所示:

/p>

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

4、所有文件创建完成后,还需要进行简单的配置。Run→Edit Configurations...,然后选择maven,配置Command line。

852468b4fb4a22a8f2def27db14de9f4.png

5、所用文件创建完成,并配置好相关设置,重新启动项目,启动后运行generator。通过控制台可以看见代码是否生成成功,或失败的原因。如果代码生成成功,可以在项目文件夹中看见生成的项目。

604e69900088cf841409b2c28dd2e974.png

这个过程共生成三个文件,一个实体类,dao,还有sql语句。

5.1、生成的实体类entity:

5.2、生

package com.example.springboottest1.entity;

public class user {

/**

* This field was generated by MyBatis Generator.

* This field corresponds to the database column user.id

*

* @mbggenerated

*/

private Integer id;

/**

* This field was generated by MyBatis Generator.

* This field corresponds to the database column user.username

*

* @mbggenerated

*/

private String username;

/**

* This field was generated by MyBatis Generator.

* This field corresponds to the database column user.password

*

* @mbggenerated

*/

private String password;

/**

* This field was generated by MyBatis Generator.

* This field corresponds to the database column user.age

*

* @mbggenerated

*/

private Integer age;

/**

* This method was generated by MyBatis Generator.

* This method returns the value of the database column user.id

*

* @return the value of user.id

*

* @mbggenerated

*/

public Integer getId() {

return id;

}

/**

* This method was generated by MyBatis Generator.

* This method sets the value of the database column user.id

*

* @param id the value for user.id

*

* @mbggenerated

*/

public void setId(Integer id) {

this.id = id;

}

/**

* This method was generated by MyBatis Generator.

* This method returns the value of the database column user.username

*

* @return the value of user.username

*

* @mbggenerated

*/

public String getUsername() {

return username;

}

/**

* This method was generated by MyBatis Generator.

* This method sets the value of the database column user.username

*

* @param username the value for user.username

*

* @mbggenerated

*/

public void setUsername(String username) {

this.username = username == null ? null : username.trim();

}

/**

* This method was generated by MyBatis Generator.

* This method returns the value of the database column user.password

*

* @return the value of user.password

*

* @mbggenerated

*/

public String getPassword() {

return password;

}

/**

* This method was generated by MyBatis Generator.

* This method sets the value of the database column user.password

*

* @param password the value for user.password

*

* @mbggenerated

*/

public void setPassword(String password) {

this.password = password == null ? null : password.trim();

}

/**

* This method was generated by MyBatis Generator.

* This method returns the value of the database column user.age

*

* @return the value of user.age

*

* @mbggenerated

*/

public Integer getAge() {

return age;

}

/**

* This method was generated by MyBatis Generator.

* This method sets the value of the database column user.age

*

* @param age the value for user.age

*

* @mbggenerated

*/

public void setAge(Integer age) {

this.age = age;

}

}

成的Dao:

package com.example.springboottest1.mapper;

import com.example.springboottest1.entity.user;

public interface userMapper {

/**

* This method was generated by MyBatis Generator.

* This method corresponds to the database table user

*

* @mbggenerated

*/

int deleteByPrimaryKey(Integer id);

/**

* This method was generated by MyBatis Generator.

* This method corresponds to the database table user

*

* @mbggenerated

*/

int insert(user record);

/**

* This method was generated by MyBatis Generator.

* This method corresponds to the database table user

*

* @mbggenerated

*/

int insertSelective(user record);

/**

* This method was generated by MyBatis Generator.

* This method corresponds to the database table user

*

* @mbggenerated

*/

user selectByPrimaryKey(Integer id);

/**

* This method was generated by MyBatis Generator.

* This method corresponds to the database table user

*

* @mbggenerated

*/

int updateByPrimaryKeySelective(user record);

/**

* This method was generated by MyBatis Generator.

* This method corresponds to the database table user

*

* @mbggenerated

*/

int updateByPrimaryKey(user record);

}

5.3、生成的SQL语句(其中一些没有用的注释被我删掉了):

id,

username,

password,

age

select

from user

where id = #{id,jdbcType=INTEGER}

delete from user

where id = #{id,jdbcType=INTEGER}

insert into user (id, username, password, age)

values (

#{id,jdbcType=INTEGER},

#{username,jdbcType=VARCHAR},

#{password,jdbcType=VARCHAR},

#{age,jdbcType=INTEGER})

insert into user

id,

username,

password,

age,

#{id,jdbcType=INTEGER},

#{username,jdbcType=VARCHAR},

#{password,jdbcType=VARCHAR},

#{age,jdbcType=INTEGER},

update user

username = #{username,jdbcType=VARCHAR},

password = #{password,jdbcType=VARCHAR},

age = #{age,jdbcType=INTEGER},

where id = #{id,jdbcType=INTEGER}

update user

set username = #{username,jdbcType=VARCHAR},

password = #{password,jdbcType=VARCHAR},

age = #{age,jdbcType=INTEGER}

where id = #{id,jdbcType=INTEGER}

四、测试访问

做好以上的准备以后,可以简单的写一个小页面,试着访问一下。

同时这个时候可以自己了解一下@Controller与@RestController的区别,以及@ResponseBody的用法。

1、比如写一个简单的HTML页面,HelloWord.html。

HelloWord

hello springboot!!!

2、访问页面的controller。helloController.java

package com.example.springboottest1.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

@RequestMapping(value = {"/hello"})

public class helloController {

@RequestMapping(value = {"/springboot"})

public String hello(){

return "HelloWord";

}

}

14c96e559fe04c3ce6f5d1f39bf12e73.png

五、编写用户登录过程代码

1、编写简单的登录页面与注册页面

(1)登录页面  userLogin.html

用户登录

请输入用户名与密码登录

用户名:

密   码:

注册

页面效果:

9d714474fac3fb21ef89ede52ce75364.png

(2)注册页面  register.html

注册

用户名:

密码:

确认密码:

年龄:

页面效果:

48da764ccadbf6d3f6ef49fe7b6eb9c1.png

(3)登录成功页面  index.html

登录成功

用户名与密码正确,登录成功!!!

页面效果:

2e91ddcf5e5d0f944a79b6f6b3a43e35.png

(4)登录失败页面  loginError.html

登录失败

用户名或密码错误,登录失败!!!

页面效果:

807c738ed655f53d14286fb8ccecdcb8.png

2、对于写代码的顺序,我是从xml(sql语句)开始写,然后Dao,Service,最后写Controller。下面为我的部分代码。(开始生成的代码没有用到的部分被我删除掉了)

(1)xml(sql语句) userMapper.xml

SELECT id,username,password,age FROM user WHERE username = #{username} AND password = #{password}

INSERT INTO user (username,password,age) VALUES (#{username},#{password},#{age})

INSERT INTO user (id,username,password,age) VALUES (UUID(),#{username},#{password},#{age})

(2)Dao层 userMapper.java

package com.example.springboottest1.mapper;

import com.example.springboottest1.entity.User;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Param;

import org.springframework.stereotype.Component;

import java.util.Map;

@Mapper

@Component

public interface userMapper {

//用户登录

User userlogin(@Param("username") String username,@Param("password") String password);

//注册新用户(方式1)

int adduser(@Param("username") String username, @Param("password") String password, @Param("age") int age);

//注册新用户(方式2)

int adduser1(@Param("username") String username, @Param("password") String password, @Param("age") int age);

}

(3)Servicr层  UserLoginService.java

package com.example.springboottest1.service;

import com.example.springboottest1.entity.User;

import com.example.springboottest1.mapper.userMapper;

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

import org.springframework.stereotype.Service;

import java.util.Map;

@Service

public class UserLoginService {

/**

* 注入dao

*/

@Autowired

private userMapper usermapper;

//用户登录

public User userLogin(String username,String password){

User user = usermapper.userlogin(username,password);

return user;

}

//注册新用户

public int adduser(String username,String password,int age){

return usermapper.adduser(username,password,age);

//return usermapper.adduser1(username,password,age); //对应sql语句中的第二种注册方式

}

}

(4)Controller层  UserLoginController.java

package com.example.springboottest1.controller;

import com.example.springboottest1.entity.User;

import com.example.springboottest1.service.UserLoginService;

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

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

@Controller

@RequestMapping(value = {"/user"})

public class UserLoginController {

/**

* 注入service

*/

@Autowired

private UserLoginService userLoginService;

/**

* 跳转到用户登录页面

* @return 登录页面

*/

@RequestMapping(value = {"/loginHtml"})

public String loginHtml(){

return "userLogin";

}

/**

* 跳转到用户注册页面

* @return 注册页面

*/

@RequestMapping(value = {"/registerpage"})

public String registerpage(){

return "register";

}

/**

* 获取用户名与密码,用户登录

* @return 登录成功页面

*/

@RequestMapping(value = {"/userLogin"})

public String userLogin(@RequestParam("username") String username, @RequestParam("password") String password, HttpServletRequest request){

User user = userLoginService.userLogin(username,password);

if(user != null){ //登录成功

request.getSession().setAttribute("session_user",user); //将用户信息放入session

return "index";

}

return "loginError";

}

/**

* 注册新用户

* @return 注册结果

*/

@ResponseBody

@RequestMapping(value = {"/uregister"})

public String addUser(@RequestParam("username") String username,

@RequestParam("password") String password,

@RequestParam("password2") String password2,

@RequestParam("age") int age){

if(!password.equals(password2)){

return "两次密码不相同,注册失败!!";

}else {

int res = userLoginService.adduser(username,password,age);

if(res == 0){

return "注册失败!";

}else {

return "注册成功!";

}

}

}

}

由于有同学问我要源码,有时候我可能看不见消息,所以将源码在百度云中分享出来,大家根据自己需要,自行下载吧,如果有什么建议就评论吧:

提取码: waeu

总结

到此这篇关于如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能的文章就介绍到这了,更多相关IDEA搭建SpringBoot项目整合mybatis实现登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值