我是靠谱客的博主 高挑玉米,这篇文章主要介绍23-shiro整合mybatisshiro整合mybatis,现在分享给大家,希望可以做个参考。

shiro整合mybatis

1.导包

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!-- 整合mybatis--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.7.1</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency>

2.pojo

  • User
复制代码
1
2
3
4
5
6
7
8
9
10
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private String pwd; }

3.mapper (dao)层

  • UserMapper
复制代码
1
2
3
4
5
6
7
@Repository @Mapper public interface UserMapper { public User queryUserByName(String name); }

4.application.yml

  • 连接数据库
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
spring: datasource: #1.JDBC type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC username: root password: root druid: #2.连接池配置 #初始化连接池的连接数量 大小,最小,最大 initial-size: 5 min-idle: 5 max-active: 20 #配置获取连接等待超时的时间 max-wait: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 30000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: true test-on-return: false # 是否缓存preparedStatement,也就是PSCache 官方建议MySQL下建议关闭 个人建议如果想用SQL防火墙 建议打开 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filter: stat: merge-sql: true slow-sql-millis: 5000 #3.基础监控配置 web-stat-filter: enabled: true url-pattern: /* #设置不统计哪些URL exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" session-stat-enable: true session-stat-max-count: 100 stat-view-servlet: enabled: true url-pattern: /druid/* reset-enable: true #设置监控页面的登录名和密码 login-username: admin login-password: 123456 allow: 127.0.0.1 #deny: 192.168.1.100

5.application.properties

复制代码
1
2
3
4
#整合mybaits mybatis.type-aliases-package=com.tian.pojo mybatis.mapper-locations=classpath:mapper/*.xml

6.UserMapper.xml

  • 建在resources / mapper / UserMapper.xml
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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"> <!--namespace 绑定一个对应的dao/mapper文件--> <mapper namespace="com.tian.mapper.UserMapper"> <select id="queryUserByName" parameterType="String" resultType="User"> select * from user where name=#{name} </select> </mapper>

7.UserService

复制代码
1
2
3
4
5
public interface UserService { public User queryUserByName(String name); }

8.UserServiceImpl

复制代码
1
2
3
4
5
6
7
8
9
10
11
@Service public class UserServiceImpl implements UserService{ @Autowired private UserMapper userMapper; @Override public User queryUserByName(String name) { return userMapper.queryUserByName(name); } }

9.测试

复制代码
1
2
3
4
5
6
7
8
9
10
@Autowired private UserService userService; @Test void contextLoads() { User user = userService.queryUserByName("张三"); System.out.println(user); }

10.config

  • UserRealm
  • 开始用数据库登录认证
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//自定义的UserRealm public class UserRealm extends AuthorizingRealm { @Autowired UserService userService; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { System.out.println("执行了授权"); return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { System.out.println("执行了认证"); UsernamePasswordToken userToken = (UsernamePasswordToken) token; //连接真实数据库 User user = userService.queryUserByName(userToken.getUsername()); if(user==null){ return null; //UnknownAccountException } //密码认证: shiro做~ , 加密了 return new SimpleAuthenticationInfo("",user.getPwd(),""); } }

最后

以上就是高挑玉米最近收集整理的关于23-shiro整合mybatisshiro整合mybatis的全部内容,更多相关23-shiro整合mybatisshiro整合mybatis内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部