shiro整合mybatis数据库
生活随笔
收集整理的這篇文章主要介紹了
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=5003、連接數據庫
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/*.xml5、添加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實體類
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数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server和MysQL中的联表
- 下一篇: vs连接oracle数据库报错,用VS连