shiro整合mybatis数据库
使用shiro实现用户拦截和登录验证之后,整合mybatis数据库
1、导入依赖
<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.5</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--shiro整合spring的包--><!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.7.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency><dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-java8time</artifactId></dependency></dependencies>
2、Druid数据源专有配置
application.yml
spring:datasource:username: rootpassword: rootpassurl: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=UTF-8driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource#SpringBoot默认是不注入这些的,需要自己绑定#druid数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许报错,java.lang.ClassNotFoundException: org.apache.Log4j.Properity#则导入log4j 依赖就行filters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
3、连接数据库
4、数据库配置
4.1 pom.xml中加入mybtis-springboot依赖
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>
4.2 application.properties
mybatis.type-aliases-package=com.kuang.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
5、添加pojo类
导入lombok依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>provided</scope></dependency>
新建pojo包,以及User实体类
package com.kuang.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int id;private String name;private String pwd;
}
6、添加mapper映射
package com.kuang.mapper;import com.kuang.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;@Repository
@Mapper
public interface UserMapper {public User queryUserById();
}
7、添加mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.orgl/DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.mapper.UserMapper"><select id="queryUserByName" parameterType="String" resultType="User" >select * from mybatis.user where name=#{name}</select></mapper>
8、编写service层
package com.kuang.service;import com.kuang.pojo.User;public interface UserService {public User queryUserByName(String name);
}
package com.kuang.service;import com.kuang.mapper.UserMapper;
import com.kuang.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService{@AutowiredUserMapper userMapper;@Overridepublic User queryUserByName(String name) {return userMapper.queryUserByName(name);}
}
9、测试从数据库中获取数据是否成功
package com.kuang;import com.kuang.service.UserServiceImpl;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class ShiroSpringbootApplicationTests {@AutowiredUserServiceImpl userServiceImpl;@Testvoid contextLoads() {System.out.println(userServiceImpl.queryUserByName("狂神"));}
}
10、结果
说明到这里环境已搭建完成并无误
11、修改自定义的Realm,连接真实的数据库
package com.kuang.config;import com.kuang.pojo.User;
import com.kuang.service.UserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;//自定义的userRealm
public class UserRealm extends AuthorizingRealm {@AutowiredUserService userService;//授权@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {System.out.println("执行了==>授权doGetAuthorizationInfo");return null;}//认证@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { System.out.println("执行了==>认证doGetAuthenticationInfo");//用户名,密码~ 数据库中取UsernamePasswordToken userToken = (UsernamePasswordToken) token;//连接真实的数据库User user = userService.queryUserByName(userToken.getUsername());if(user==null){return null;}return new SimpleAuthenticationInfo("",user.getPwd(),"");}
}
到此,就可以使用shiro验证用户和登录拦截了。
shiro整合mybatis数据库相关推荐
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 1.前言 本文主要介绍使用SpringBoot与shiro实现基 ...
- springboot整合mysql5.7_springboot整合mybatis访问mysql,数据库
讲解如何在springboot下整合mybatis,并访问数据库. 引入依赖 在pom文件引入mybatis-spring-boot-starter的依赖: org.mybatis.spring.bo ...
- springboot update数据_SpringBoot整合Mybatis+Druid+数据库(注解版)
运行展示 正题 Spring boot :2.1.5RELEASE :数据库(Mysql.Oracle):Mybatis:阿里云的连接池 : Druid : 步骤 1.POM依赖 <!-- My ...
- SpringBoot 整合mybatis、mybatis日志、并测试findAll查询数据库方法
一.创建SpringBoot项目 随便创建一个SpringBoot项目,能启动就行 建议看我的上一个文章 SpringBoot框架快速入门搭建Hello World 二.添加mybatis依赖并配置 ...
- 【SpringBoot整合Mybatis】数据库某字段值为空时,接口未返回该字段 解决办法
[SpringBoot整合Mybatis]数据库字段为空时,接口不返回该字段 解决办法 问题描述: 排查问题: 解决问题: 测试: 参考资料: 今天整合项目的时候,发现了SpringBoot整合Myb ...
- 《SpringBoot与Shiro整合-权限管理实战---从构建到模拟数据库登入》
<SpringBoot与Shiro整合-权限管理实战> ---- 从构建到模拟数据库登入 ---- 点击下载源码 ---- 或者查看? 文章目录 <SpringBoot与Shiro整 ...
- shiro整合springboot,配置mybatis和增加邮箱验证码登录
目录 config配置 controller层 Mapper(Mybatis配置) pojo Service 工具类 MailUtil 前台页面 配置(application) 相关依赖 config ...
- 【超详细】SpringBoot与Shiro整合-权限管理实战实操(附源码地址)
一.搭建SpringBoot开发环境 1. 安装好开发软件和Maven等 开发工具:Spring Tool Suite(TST) Maven :3.3.9 jdk:1.8 2. 创建springboo ...
最新文章
- Confluence 6 计划任务
- 程序计算机限制无法打开,由于一个软件限制策略的阻止,windows无法打开此程序...解决方案参考...
- navicat 连接 mogodb 报错 requires authentication
- vscode 显示多个文件_优秀的 VS Code 前端开发扩展
- python打包工具报错_python打包生成exe报错
- 样式中文字和图片对齐问题
- JDK1.8的接口新特性
- 自己的父母,能把钱交给他们存吗?
- nginx服务器设置url的优雅链接
- 云服务器机型系统选择,云服务器机型选择操作系统
- 知乎热榜的话题,为什么从阿里巴巴离职,大萌哥汇总了9大理由,看完我先柠檬酸了!
- 如何给图片加水印?分享怎么给图片加水印的方法
- 笔记连载 | Day15【按键检测、按键消抖】 【原理及verilog仿真】篇
- 网页上打印PDF文件
- Endnote无法正确识别引文
- python语言下同一个类下有多个函数,其中一个函数想调用另外一个函数里面的变量怎么调用
- 输入地址查询并获取地址的经纬度-百度地图-JS
- 一个80后SEOER对于SEO职业规划的三点想法
- 热水器进水阀与角阀连接处漏水
- Github开源项目下载加速
热门文章
- [8086汇编]利用栈翻转内存数据
- AngularJS入门心得2——何为双向数据绑定
- Liaoning Province--保三成功
- java中的Iterator和Iterable 区别
- pytorch 图像分割的交并比_Segmentation101系列-最简单的卷积网络语义分割(1)-PASCAL VOC图像分割...
- java vector 线程安全_关于Vector到底是不是 线程安全的 问题
- java main 命令行_java Main 命令行
- html导航栏点击不能跳转,无法单击导航栏中的链接CSS HTML
- MySQL小黑框怎么打开_打开你的小黑框命令行,来跟我一起嗨嗨嗨
- 绘图的尺寸_Auto CAD机械绘图尺寸标注教程1(尺寸标注简介)