介绍一下springboot+mybatisplus框架
时间: 2023-09-23 12:10:50 浏览: 53
好的,Spring Boot MyBatisPlus框架是一个快速开发的Java Web应用程序框架,它结合了Spring Boot和MyBatisPlus两个开源项目,使得开发者可以更加便捷地进行Web应用程序的开发工作。Spring Boot提供了快速开发和简单配置的特性,而MyBatisPlus则提供了更好的ORM(对象关系映射)功能,同时简化了开发者的工作量。它通过简单的配置和注解,可以快速地生成CRUD(增删改查)的SQL语句,并且可以轻松进行分页、排序等操作。对于开发Java Web应用程序,Spring Boot MyBatisPlus框架是一个非常好的选择。
相关问题
springboot+shiro+jwt+mybatisplus框架
这个框架整合可以分为以下几个步骤:
1. 集成 Spring Boot:在 pom.xml 文件中添加 Spring Boot 依赖,创建 Spring Boot 启动类。
2. 集成 MyBatis Plus:在 pom.xml 文件中添加 MyBatis Plus 依赖,配置数据源和 MyBatis Plus 相关配置。
3. 集成 Shiro:在 pom.xml 文件中添加 Shiro 依赖,创建 Shiro 配置类,配置 Shiro 的 Realm 和 SecurityManager。
4. 集成 JWT:在 pom.xml 文件中添加 jjwt 依赖,创建 JWT 工具类,用于生成和解析 JWT。
下面是一个简单的示例代码,你可以根据你的实际需求进行调整:
1. pom.xml 文件中添加依赖:
```xml
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- Shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro.version}</version>
</dependency>
<!-- jjwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
```
2. 创建 Spring Boot 启动类:
```java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
3. 配置 MyBatis Plus:
```java
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
4. 配置 Shiro:
```java
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
shiroFilter.setUnauthorizedUrl("/401");
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/401", "anon");
filterChainDefinitionMap.put("/**", "jwt");
shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap);
Map<String, Filter> filters = new LinkedHashMap<>();
filters.put("jwt", new JwtFilter());
shiroFilter.setFilters(filters);
return shiroFilter;
}
@Bean
public DefaultWebSecurityManager securityManager(Realm realm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm);
return securityManager;
}
@Bean
public Realm realm() {
return new UserRealm();
}
}
```
5. 创建 JWT 工具类:
```java
public class JwtUtil {
private static final String SECRET_KEY = "your_secret_key";
private static final long EXPIRATION_TIME = 3600_000; // 1 hour
public static String generateToken(String username) {
Date now = new Date();
Date expiration = new Date(now.getTime() + EXPIRATION_TIME);
return Jwts.builder()
.setSubject(username)
.setIssuedAt(now)
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS512, SECRET_KEY)
.compact();
}
public static String getUsernameFromToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
return claims.getSubject();
}
public static boolean validateToken(String token) {
try {
Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token);
return true;
} catch (JwtException e) {
return false;
}
}
}
```
6. 创建 JwtFilter:
```java
public class JwtFilter extends AuthenticatingFilter {
@Override
protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String token = request.getHeader("Authorization");
if (StringUtils.isBlank(token)) {
return null;
}
return new JwtToken(token);
}
@Override
protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
response.setStatus(HttpStatus.UNAUTHORIZED.value());
response.getWriter().write("{\"code\":401,\"message\":\"未登录或登录已过期,请重新登录\"}");
return false;
}
@Override
protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object o) throws Exception {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String token = request.getHeader("Authorization");
if (StringUtils.isBlank(token)) {
return false;
}
return JwtUtil.validateToken(token);
}
}
```
7. 创建 JwtToken:
```java
public class JwtToken implements AuthenticationToken {
private final String token;
public JwtToken(String token) {
this.token = token;
}
@Override
public Object getPrincipal() {
return JwtUtil.getUsernameFromToken(token);
}
@Override
public Object getCredentials() {
return token;
}
}
```
8. 创建 UserRealm:
```java
public class UserRealm extends AuthorizingRealm {
@Autowired
private UserService userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
String username = (String) authenticationToken.getPrincipal();
User user = userService.getByUsername(username);
if (user == null) {
throw new UnknownAccountException("账号不存在");
}
return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
}
}
```
这样,简单的 Spring Boot + Shiro + JWT + MyBatis Plus 整合就完成了。你可以根据具体的需求,对代码进行修改和优化。
springboot+mybatisplus架构图
在SpringBoot MybatisPlus架构中,主要包括以下几个模块和组件:
1. 控制层(Controller):使用@RestController注解,用于处理请求和响应,返回JSON数据到页面。
2. 服务层(Service):使用@Service注解,提供业务逻辑的实现,通过@Autowired注解进行实例化。
3. 存储层(Repository):使用@Repository注解,负责与数据库进行交互,通过其他注解直接注入。
4. 实体类(Entity):使用@TableId注解标注主键字段,与数据库表对应。
5. 数据访问层(Dao):使用Mybatis-Plus框架提供的API进行数据库操作,如增删改查。
6. 框架层:Mybatis-Plus框架用于简化开发流程,提供基础的CRUD操作、代码生成等功能。
在开发管理信息系统框架中,这个架构还可以通过提供菜单、角色(带有权限)、部门等接口来帮助用户进行扩展服务。同时,还需要与数据库进行交互,根据需求完善角色、菜单、部门对权限表的整合,并实现树形数据的构建,以及在前端(Layui)上展示数据。此外,还需要整合Shiro安全框架来确保系统的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [开发管理信息系统框架+shiro+springboot+layui+mybatisplus](https://blog.csdn.net/qq_45765587/article/details/123988003)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [springboot+mybatis plus学习记录+三层架构理解](https://blog.csdn.net/weixin_49267169/article/details/127307831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]