SpringBoot整合Shiro 三:整合Mybatis


搭建环境见: 

shiro配置类见: 

 

整合Mybatis

添加Maven依赖

  mysql、druid、mybatis

    lombok是可选项,方便写实体类

<dependency>
     <groupId>mysqlgroupId>
     <artifactId>mysql-connector-javaartifactId>
 dependency>
 ?
 <dependency>
     <groupId>com.alibabagroupId>
     <artifactId>druid-spring-boot-starterartifactId>
     <version>1.1.10version>
 dependency>
 ?
 <dependency>
     <groupId>org.mybatis.spring.bootgroupId>
     <artifactId>mybatis-spring-boot-starterartifactId>
     <version>2.1.1version>
 dependency>
 ?<dependency>
     <groupId>org.projectlombokgroupId>
     <artifactId>lombokartifactId>
     <version>1.18.12version>
     <optional>trueoptional>
 dependency>

 

实体类

User

package com.zy.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;
 }

数据库

 

application.properties

配置mybatis

mybatis.type-aliases-package=com.zy.pojo
mybatis.mapper-locations=classpath:mapper/*.xml

Mapper

UserMapper

 package com.zy.mapper;
 ?
 import com.zy.pojo.User;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 ?
 @Mapper
 @Repository
 public interface UserMapper {
     User queryUserByName(String name);
 }

UserMapper.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="com.zy.mapper.UserMapper">
 ?
     <select id="queryUserByName" parameterType="String" resultType="User">
         select * from user where name=#{name};
     select>
 ?
 mapper>

 

service

UserService

package com.zy.service;
 ?
 import com.zy.pojo.User;
 ?
 public interface UserService {
     User queryUserByName(String name);
 ?
 }

UserServiceImpl

package com.zy.service;
 ?
 import com.zy.mapper.UserMapper;
 import com.zy.pojo.User;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 ?
 @Service
 public class UserServiceImpl implements UserService{
 ?
     @Autowired
     UserMapper userMapper;
 ?
     @Override
     public User queryUserByName(String name) {
         return userMapper.queryUserByName(name);
     }
 }

UserRealm

  因为整合了Mybatis,所以使用数据库来进行认证

AuthenticationInfo

//认证
 @Override
 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
     System.out.println("执行了=>认证doGetAuthenticationInfo");
 ?
     UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
 ?
     //用户名+密码
     User user = userService.queryUserByName(token.getUsername());
 ?
     if (user == null) {
         return null;
     }
 ?
     //密码认证,shiro做
     return new SimpleAuthenticationInfo("", user.getPwd(), "");
 }

controller不用变

 

测试

登录

成功

存在安全隐患,后续可以通过加密操作保障安全