springboot整合mybatis
1、整体结构


2、需要的依赖
<dependencies>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-jdbc</artifactid>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-thymeleaf</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>2.1.3</version>
</dependency>
<dependency>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
</dependency>
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupid>com.alibaba</groupid>
<artifactid>druid</artifactid>
<version>1.2.1</version>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
<exclusions>
<exclusion>
<groupid>org.junit.vintage</groupid>
<artifactid>junit-vintage-engine</artifactid>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupid>org.xmlunit</groupid>
<artifactid>xmlunit-core</artifactid>
</dependency>
<dependency>
<groupid>org.mybatis</groupid>
<artifactid>mybatis</artifactid>
<version>3.4.6</version>
</dependency>
</dependencies>声明一下:
web架构需要thymeleaf支持,而mybatis需要mybatis-spring-boot-starter支持,
3、新建application.yml文件
在resources目录下新建yml文件,用于存放数据库连接需要的一些数据,也可以不建,直接将这些数据放在application.properties文件下,不过格式得转换
spring:
datasource:
driver-class-name: com.mysql.jdbc.driver
url: jdbc:mysql://localhost:3306/weixin?servertimezone=gmt%2b8&usessl=true
username: root
password: zhs03171812
4、在application.properties文件中加入
#端口号 server.port=8080 #druid数据库连接池 type=com.alibaba.druid.pool.druiddatasource #清除缓存 spring.thymeleaf.cache=false #配置mapper mybatis.mapper-locations=classpath:mapper/*.xml
5、在pojo下的新建类userlogin
package com.example.weixin_01.pojo;
import lombok.allargsconstructor;
import lombok.data;
import lombok.noargsconstructor;
@data
@allargsconstructor
@noargsconstructor
public class userlogin {
private string username;
private string password;
}
6、新建数据库
名为weixin,名可以随意,不过要与application.yml文件中的一致

7、建表,名为userlogin

8、mapper层
新建userloginmapper接口
package com.example.weixin_01.mapper;
import com.example.weixin_01.pojo.userlogin;
import org.apache.ibatis.annotations.mapper;
import org.springframework.stereotype.repository;
import java.util.list;
@mapper
@repository
public interface userloginmapper {
//查询
public list<userlogin> queryall();
//添加数据
public int add(userlogin userlogin);
//根据用户名查询数据
public userlogin querybyname(string username);
}
9、在resources目录下新建mapper目录
并在这个目录下新建userloginmapper.xml文件,并在application.properties中注册该组件,前面已经注册
<?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.example.weixin_01.mapper.userloginmapper">
<select id="queryall" resulttype="com.example.weixin_01.pojo.userlogin">
select * from userlogin
</select>
<insert id="add" parametertype="com.example.weixin_01.pojo.userlogin">
insert into userlogin values (#{username},#{password})
</insert>
<select id="querybyname" resulttype="com.example.weixin_01.pojo.userlogin">
select * from userlogin where username = #{username}
</select>
</mapper>
10、测试
在test文件中,先测试是否能联通数据库,可以自己在数据库中插入一个数据,然后测试时查询全部,看看能否将自己插入的数据查询出来,如果可以,则数据库连接这部分就没问题
package com.example.weixin_01;
import com.example.weixin_01.mapper.userloginmapper;
import com.example.weixin_01.pojo.userlogin;
import org.junit.jupiter.api.test;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.boot.test.context.springboottest;
import javax.sql.datasource;
import java.sql.connection;
import java.sql.sqlexception;
import java.util.list;
@springboottest
class weixin01applicationtests {
@autowired
datasource datasource;
@test
void contextloads() throws sqlexception {
system.out.println(datasource.getclass());
connection connection = datasource.getconnection();
system.out.println(connection);
//template模板,拿来即用
connection.close();
}
@autowired
userloginmapper userloginmapper;
@test
public void totest(){
list<userlogin> userlogins = userloginmapper.queryall();
userlogins.foreach(e-> system.out.println(e));
}
}
11、services层
在services下新建接口userloginservicesi和类userloginservicesimpl
userloginservicesi接口:
package com.example.weixin_01.services;
import com.example.weixin_01.pojo.userlogin;
import java.util.list;
public interface userloginservicesi {
//查询
public list<userlogin> queryall();
//添加数据
public int add(userlogin userlogin);
//根据用户名查询数据
public userlogin querybyname(string username);
}
userloginservicesimpl类
package com.example.weixin_01.services;
import com.example.weixin_01.mapper.userloginmapper;
import com.example.weixin_01.pojo.userlogin;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
import java.util.list;
@service
public class userloginservicesimpl implements userloginservicesi {
@autowired
userloginmapper userloginmapper;
@override
public list<userlogin> queryall() {
return userloginmapper.queryall();
}
@override
public int add(userlogin userlogin) {
return userloginmapper.add(userlogin);
}
@override
public userlogin querybyname(string username) {
return userloginmapper.querybyname(username);
}
}
12、conteoller层
编写mycontroller类
package com.example.weixin_01.controller;
import com.example.weixin_01.pojo.userlogin;
import com.example.weixin_01.services.userloginservicesimpl;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;
@controller
public class mycontroller {
@autowired
userloginservicesimpl userloginservicesimpl;
@requestmapping("/tologin")
public string tologin(){
return "login";
}
@requestmapping("/loginsuccess")
public string loginsuccess(model model, userlogin userlogin){
//先查询看该用户名是否存在
userlogin userlogin1 = userloginservicesimpl.querybyname(userlogin.getusername());
if(userlogin1 != null){ // 如果查询的用户不为空
system.out.println(userlogin1.tostring());
return "success";
}
else{
//返回到登录页面
model.addattribute("data","该用户不存在,请先注册");
return "login";
}
}
//登录界面
@requestmapping("/toregister")
public string toregister(){
return "register";
}
@requestmapping("/registersuccess")
public string toregistersuccess(model model,userlogin userlogin){
//将账号密码加入到数据库中
int add = userloginservicesimpl.add(userlogin);
system.out.println("数据插入成功!");
model.addattribute("data","注册成功,请登录!");
return "login";
}
}
13、编写前端页面
将这些页面放在templates下面
随便编写了一下,没有用bootstrap美化一下。。
1,login.html:登录页面
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body style="background: aqua">
<div align="center">
<h2>登录界面</h2>
<span th:text="${data}" style="text-color:red;font-size: 10px"></span>
<form method="get" action="/loginsuccess">
用户名:<input type="text" name="username" placeholder="请输入用户名" required/>
密码:<input type="text" name="password" placeholder="请输入密码" required/>
<input type="submit" value="登录">
</form>
<form method="get" action="/toregister">
<input type="submit" value="注册">
</form>
</div>
</body>
</html>2,register.html:注册页面
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body style="background: aqua">
<div align="center">
注册界面
<form method="get" action="/registersuccess">
用户名:<input type="text" name="username" placeholder="请输入用户名" required/>
密码:<input type="text" name="password" placeholder="请输入密码" required/>
确认密码:<input type="text" name="password2" placeholder="请输入密码" required/>
<input type="submit" value="注册">
</form>
</div>
</body>
</html>3,success.html:成功界面
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<h1>success</h1>
</body>
</html>14、运行一下
网页输入:localhost:8080/tologin
大概就这样。。。

15、输入用户名和密码
输入用户名和密码,点击登录,如果数据库中存在该账号,则跳转到success页面,
这里就实现了数据的查询,通过username方式查询

如果账号不存在,则显示用户名不存在,请先注册

16、注册
点击注册进入注册页面,这里主要实现了数据的增加

点击注册后

17、验证
查看数据库中的数据

张三已经注册成功,当然也可以实现登录了!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论