Overview / Introduction about the Team
Fortis is a prominent football team based in the vibrant region of [Country/Region], competing in the top-tier [League]. Known for their dynamic playing style, Fortis operates under a 4-3-3 formation, emphasizing fluid attacking play and solid defensive organization. The team is currently managed by [Coach/Manager], who took over in [Year]. Founded in [Year Founded], Fortis has quickly risen to prominence within the league.
Team History and Achievements
Fortis has a rich history marked by numerous accolades. They have won [Number] league titles and secured multiple cup victories. Notable seasons include [Year], when they finished as runners-up, showcasing their potential to challenge for top honors consistently. Their journey is punctuated with records such as [Notable Record].
Current Squad and Key Players
The current squad boasts several star players. Key figures include:
- [Player Name]: A forward known for his clinical finishing and agility.
- [Player Name]: A central midfielder with exceptional vision and passing ability.
- [Player Name]: A goalkeeper celebrated for his reflexes and commanding presence.
Team Playing Style and Tactics
Fortis employs a 4-3-3 formation, focusing on high pressing and quick transitions. Their strategy leverages the strengths of their wide forwards to stretch defenses, while the midfield trio controls the tempo. Strengths include their attacking prowess and set-piece efficiency, though they occasionally struggle with defensive solidity against counter-attacks.
Interesting Facts and Unique Traits
Fans affectionately call Fortis “The Fortress,” reflecting their resilient performances at home. They have a passionate fanbase known for creating an electrifying atmosphere at matches. Rivalries with teams like [Rival Team] add an extra layer of excitement to their fixtures.
Lists & Rankings of Players, Stats, or Performance Metrics
Here are some key stats:
- ✅ Top Scorer: [Player Name] with [Goals]
- ❌ Most Assists: [Player Name] with [Assists]
- 🎰 Clean Sheets: Goalkeeper [Name] – [Number]
- 💡 Pass Completion Rate: Midfielder [Name] – [%]
Comparisons with Other Teams in the League or Division
Fortis stands out due to their aggressive attacking style compared to more conservative teams like [Comparison Team]. Their ability to dominate possession sets them apart from others who rely on counter-attacking tactics.
Case Studies or Notable Matches
A breakthrough game was their victory against top-tier rivals in [Year], where they displayed tactical superiority by exploiting weaknesses in the opposition’s defense. This match remains a highlight of their recent campaign.
| Metric | Data |
|---|---|
| Total Goals Scored This Season | [Number] |
| Total Goals Conceded This Season | [Number] |
| Last Five Matches Form (W/D/L) | [Form Record] |
Tips & Recommendations for Analyzing the Team or Betting Insights
To maximize betting insights:
- Analyze head-to-head records against upcoming opponents.
- Closely monitor player fitness levels and any potential injuries.</li
- Evaluate recent form trends over multiple games rather than isolated results.
Frequently Asked Questions (FAQ)
What are Fortis’ strengths?
Their main strengths lie in offensive capabilities, particularly through wide play and set-pieces.
How does Fortis perform away from home?
Fortis tends to be more conservative on away trips but often capitalizes on counter-attacks effectively.
Cite Quotes or Expert Opinions about the Team
“Fortis is a team that thrives under pressure, showcasing resilience that often turns games around,” says football analyst John Doe.
Pros & Cons of the Team’s Current Form or Performance
- ✅ Pros:
- Prominent attacking threat capable of breaking down defenses quickly.
- “High pressing game that disrupts opponents’ rhythm.”
- “Strong performance during critical fixtures.”
- “Versatile squad capable of adapting strategies mid-game.”
- “Efficient use of substitutes enhances team dynamics.”
- “Reliable performances from key players.”
</ufengshen2021/springboot/src/main/java/com/example/demo/service/impl/UserServiceImpl.java
package com.example.demo.service.impl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author fengshen
* @date Created in 下午8:45
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void saveUser(User user) {
userMapper.insert(user);
System.out.println(“saveUser”);
System.out.println(user.toString());
}
}
# springboot
## 集成mybatis
### pom.xml
xml
4.0.0
com.fengshen
springboot-demo
1.0-SNAPSHOT
jar
org.springframework.boot
spring-boot-starter-parent
<!–${latest.spring-boot.version} –>
<!–1.5.RELEASE –>
<!–${spring-boot.version}–>
<!–${spring.boot.version}–>
<!—->
<!–${project.parent.version}–>
<!—->
<!—->
<!—->
<!–org.springframework.boot –>
<!–spring-boot-starter-parent –>
<!–${project.parent.version} –>
<!—->
<!—->
<>
<>org.springframework.boot
<>spring-boot-starter-parent
<>${project.parent.version}
<>
<>
### application.properties配置文件内容:
properties
# 数据库配置
# 数据库驱动类名
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库连接地址及端口、数据库名称、用户名、密码信息。
# 格式为:jdbc:mysql://ip地址[:端口]/数据库名[?参数]=[值]&参数=[值]
# 如果未指定端口,则默认为3306。
# 比如说你数据库名为testdb,则该项设置为:
# spring.datasource.url=jdbc:mysql://127.0.0.1/testdb?user=root&password=root123456&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.url=jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
# 数据源类型(比如druid、c3p)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 数据源连接池初始化大小(最小空闲连接数)
spring.datasource.initialSize=5
# 数据源连接池最大活动连接数(最大连接数)
spring.datasource.maxActive=20
# 最大等待时间(毫秒)
spring.datasource.maxWait=60000
# 获取连接失败重试次数。当验证代码抛出异常时。
spring.datasource.minEvictableIdleTimeMillis=300000
# 连接回收间隔时间(毫秒)
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置间隔多长时间才进行一次检测,检测需要关闭的空闲连接。
#
#
#
#
#
#
#
#
#
#
### 配置类MybatisConfig.class:
java
package com.fengshen.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
/**
* Mybatis 配置类.
*
* @author fengshen.
*/
@Configuration // 声明当前类是一个配置类.
@MapperScan(basePackages = {“com.fengshen.dao”}) // 扫描DAO接口所在目录.
public class MybatisConfig {
// public SqlSessionFactory sqlSessionFactory() throws Exception {
// SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
//
// String resource = “classpath*:mapper/*.xml”;
//
// PathMatchingResourcePatternResolver resolver =
// new PathMatchingResourcePatternResolver();
//
// Resource[] resources =
// resolver.getResources(resource);
//
// for (int i = resources.length – 1; i >= 0; i–) {
// System.out.println(resources[i]);
// }
//
// List listResources = new ArrayList();
//
// for (Resource resource : resources) {
// listResources.add(resource);
//}
//
//// 将sql映射文件添加到bean中.
//// 注意:如果没有手动添加mapper文件夹下所有xml文件,则此处不能使用resources数组,
//// 而需要使用全路径方式加载xml文件(参见下面注释部分)
//// bean.setMapperLocations(resources);
//
//// 全路径方式加载xml文件(如果没有手动添加mapper文件夹下所有xml文件)
//// bean.setMapperLocations(new PathMatchingResourcePatternResolver()
//// .getResources(“classpath*:/mapper/**/*.xml”));
//
// List<Class> classes =
// new ArrayList();
//
//// 添加dao接口所在包以及其子孙包下所有类(注意:只有Dao层接口)
//// 找到Dao层接口之后,将其放到classes集合里面去。
////
//// 只能通过反射找到dao层接口,并不能通过反射找到实现dao层接口的实体类。
////
//// 比如说有个UserDao.java和UserDaoImpl.java两个类。
////
//// 只能通过反射找到UserDao.java这个dao层接口,
////
//// 而不能通过反射找到UserDaoImpl.java这个实现dao层接口的实体类。
////
//// 因此,在MybatisConfig.class中必须声明@MapperScan注解,
////
//// 并且将要扫描dao层接口所在目录写进去,
////
//// 否则程序就会报错:“No MyBatis mapper found”错误。
////
//// 找到所有dao层接口之后将其放入classes集合里面去。
////
// ClassPathScanningCandidateComponentProvider provider =
// new ClassPathScanningCandidateComponentProvider(false);
//
// Set matchingBeans =
//(provider.findCandidateComponents(“com.fengshen.dao”)).keySet();
//
// for (String[] beans : matchingBeans) {
//
//}
//
///** 循环遍历每一个元素 */
///** 每一个元素都是一个Class对象 */
///** 将Class对象转换成Class类型并放入classes集合里面去 */
//@SuppressWarnings(“unchecked”)
//{
///// 转换成Class类型并放入classes集合里面去.
///// 注意:如果没有手动添加mapper文件夹下所有xml文件,则此处不能使用beans数组,
///// 而需要使用全路径方式加载xml映射文件(参见上面注释部分)
///// classes.add((Class) beans[1]);
//}
//
///// 全路径方式加载xml映射文件(如果没有手动添加mapper文件夹下所有xml文件)
///// bean.setMapperLocations(new PathMatchingResourcePatternResolver()
///// .getResources(“classpath*:/mapper/**/*.xml”));
//
///// 将classes集合传递给SqlSessionFactoryBean对象.
///// 注意:如果没有手动添加mapper文件夹下所有xml文件,则此处不能使用classes数组,
///// 而需要使用全路径方式加载xml映射文件(参见上面注释部分)
///// bean.setTypes(classes.toArray());
//
///** 设置数据源 */
//@Autowired
//(DataSource dataSource) {
///* 设置数据源 */
///* 注意:如果没有手动添加mapper文件夹下所有xml映射文件,则此处不能使用dataSource变量,
///
///
///
///
///
///
///
///
///
///
///
///
///*
///*
//* 而需要设置全路径方式加载数据源(参见上面注释部分)*/
///* bean.setDataSource(dataSource); */
//}
//
return bean.getObject(); // 返回SqlSessionFactory对象.
}
}
### 创建用户表user:
mysql
create table user (
id int primary key auto_increment,
name varchar(20),
password varchar(32),
nickname varchar(20),
email varchar(50),
tel varchar(11)
);
insert into user values(null,’fengshen’,’123456′,’老王’,’[email protected]’,’18888888888′);
insert into user values(null,’zhangsan’,’123456′,’张三’,’[email protected]’,’17777777777′);
insert into user values(null,’lisi’,’123456′,’李四’,’[email protected]’,’16666666666′);
insert into user values(null,’wangwu’,’123456′,’王五’,’[email protected]’,’15555555555′);
### 编写用户实体类:
java
package com.fengshen.entity;
/**
* 用户实体类.
*
* @author fengshen.
*/
public class User {
private Integer id; // 主键id.
private String name; // 用户名.
private String password; // 密码.
private String nickname; // 昵称.
private String email; // 邮箱.
private String tel; // 手机号.
public Integer getId() { return id;}
public void setId(Integer id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String getPassword() { return password;}
public void setPassword(String password) { this.password = password;}
public String getNickname() { return nickname;}
public void setNickname(String nickname) { this.nickname = nickname;}
public String getEmail() { return email;}
public void setEmail(String email) { this.email = email;}
public String getTel() { return tel;}
public void setTel(String tel) { this.tel = tel;}
}
### 编写用户DAO层:
java
package com.fengshen.dao;
import com.fengshen.entity.User;
/**
* 用户DAO接口.
*
* @author fengshen.
*/
public interface UserDao {
User selectById(Integer id);
int insert(User record);
}
### 编写用户DAO层实现类:
java
package com.fengshen.dao.impl;
import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import org.mybatis.spring.SqlSessionTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* 用户DAO实现类.
*
* @author fengshen.
*/
@Repository(“userDao”)
public class UserDaoImpl implements UserDao {
protected final Logger logger =
LoggerFactory.getLogger(getClass());
private DataSource dataSource;// 数据源.
private SqlSessionTemplate sqlSessionTemplate;// sql工作模板。
@Autowired(required=true)
public void setDataSource(DataSource dataSource){
this.dataSource=dataSource;}
@Autowired(required=true)
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate){
this.sqlSessionTemplate=sqlSessionTemplate;}
@Override
public User selectById(Integer id){
return sqlSessionTemplate.selectOne(“com.fengshen.dao.UserDao.selectById”,id);}
@Override
public int insert(User record){
return sqlSessionTemplate.insert(“com.fengshen.dao.UserDao.insert”,record);}
}
### 编写用户服务层:
java
package com.fengshen.service;
/**
* 用户服务层接口.
*
* @author fengshen.
*/
public interface UserService {
void saveUser();
User queryUserById(Integer id);
}
### 编写用户服务层实现类:
java
package com.fengshen.service.impl;
/**
* 用户服务层实现类.
*
* @author fengshen.
*/
@Service(“userService”)
@Transactional(readOnly=false)
public class UserServiceImpl implements UserService {
@Autowired(required=true)
private UserDao userDao;// 注入用户DAO对象.
@Override
@Transactional(readOnly=false)
public void saveUser(){
System.out.println(userDao.getClass().getName());
System.out.println(userDao.selectById(1));
}
@Override
@Transactional(readOnly=true)
public User queryUserById(Integer id){
return userDao.selectById(id);}
}
### 测试用例:
java
package com.fenzhen.test;
/**
* 测试用例:
*
* 测试用例主要用于测试整个系统是否正常运行起来,并且测试整个系统各组件之间是否正常通信。
*
* 对于测试用例来说,只需调用系统提供的方法就可以了,
*
* 不必关心方法内部具体执行过程及结果如何返回给调用者。
*
* 测试用例不关心方法内部具体执行过程及结果如何返回给调用者;
*
* 测试用例只需知道某个方法有什么输入参数以及该方法执行完后有什么输出结果即可;
*
* 不管该方法内部具体执行过程及结果如何返回给调用者都无所谓!因为测试用例只负责测试整个系统是否正常运行起来并且各组件之间是否正常通信而已!因此测试用例对于业务逻辑一无所知!也就是说测试用例与业务逻辑无关!这也就是我们为什么要把测试代码单独提取出来放在test目录里面而不与业务代码混杂在一起!因为业务代码与测试代码彼此互相干涉会导致程序无法编译或者运行出错!从而导致我们无法进行单元测试!更别提进行功能性或者压力性测试了!因此我们要把业务代码与测试代码分开存放!
*
*
*
*
*
*
*
*
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={“classpath*:applicationContext.xml”,”classpath*:applicationContext-mybatis.xml”,”classpath*:applicationContext-shiro.xml”})
@SpringBootTest(classes={TestApplication.class},webEnvironment=RANDOM_PORT)
@TestPropertySource(properties={“server.port=-1”})
@Slf4j
//@Transactional(propagation=Propagation.NOT_SUPPORTED)
@Transactional(readOnly=false)
@SuppressWarnings({“rawtypes”,”unchecked”})
public class TestController {
@BeforeTransaction()
@BeforeMethod(alwaysRun=true)
@AfterMethod(alwaysRun=true)
@AfterTransaction()
@BeforeSuite(alwaysRun=true)
@BeforeClass(alwaysRun=true)
@AfterSuite(alwaysRun=true)
@AfterClass(alwaysRun=true)
@Test(dependsOnMethods={“testSaveUser”},timeout=100000)
/**
* 测试保存用户信息操作。
*
*/
@Test(dependsOnMethods={“testQueryAllUsers”},timeout=100000)
/**
* 查询所有用户信息。
*
*/
@Test(timeout=100000)
/**
* 查询指定ID编号的用户信息。
*
*/
@Test(timeout=100000)
/**
* 删除指定ID编号的用户信息。
*
*/
@Test(timeout=100000)
/**
* 更新指定ID编号的用户信息。
*
*/
/**
* 修改指定ID编号的用户信息。
*
*/
/**
* 查询指定ID编号以及用户名匹配条件查询符合条件得到满足条件得多条记录。
*
*/
/**
* 分页查询获取第一页符合条件得记录列表以及总记录数。
*
*/
/**
* 分页查询获取第二页符合条件得记录列表以及总记录数。
*
*/
/**
* 分页查询获取第三页符合条件得记录列表以及总记录数。
*
*/
@Autowired(required=false)
private TestController testController;// 自身引用变量.
@Autowired(required=false)
private UserService userService;// 注入UserService对象.
@Autowired(required=false)
private UserDao userDao;// 注入UserDao对象.
@Autowired(required=false)
private HttpServletRequest request;// 注入HttpServletRequest请求对象.
@Autowired(required=false)
private HttpServletResponse response;// 注入HttpServletResponse响应对象.
@Autowired(required=false)
private HttpSession session;// 注入HttpSession会话对象。
/**
/
/
/
/
/
/
/
/
/
**/
@Test(dependsOnMethods={“testSaveUser”},timeout=100000)
void testSaveUser(){
userService.saveUser();
}
/**
/
/
/
/
/
/
/
/
**/
@Test(dependsOnMethods={“testSaveUser”},timeout=100000)
List<UserEntityVoWrapper> testQueryAllUsers(){
List<UserEntityVoWrapper> list=userService.queryAllUsers();
if(list!=null&&list.size()>10){
log.info(“nnnnnn”);
log.info(“nn”);
log.info(“n”+StringUtils.join(list,”,n”));
log.info(“nn”);
log.info(“nnnnnn”);
}
return list;
}
/**
/
/
/
**/
@Test(dependsOnMethods={“testQueryAllUsers”},timeout=100000)
void testDeleteUsers(){
List ids=new ArrayList();
for(int i=(int)(Math.random()*10);i<=10;i++){
ids.add(i);
}
userService.deleteUsers(ids);
}
/**
/
**/
@Test(dependsOnMethods={"testDeleteUsers"},timeout=100000)
void testUpdateUsers(){
List<IntegerMapWrapper> ids=new ArrayList();
for(int i=(int)(Math.random()*10);i<=10;i++){
IntegerMapWrapper[] temp=new IntegerMapWrapper[5];
for(int j=(int)(Math.random()*5);j<=5;j++){
temp[j]=new IntegerMapWrapper(i,j);
ids.add(temp[j]);
}
}
userService.updateUsers(ids);
}
/**
/
**/
@Test(dependsOnMethods={“testUpdateUsers”},timeout=100000)
void testQueryAllPagedUsers(){
PageRequest pageRequest=new PageRequest();
pageRequest.setCurrentPageNo((int)(Math.random()*10));
pageRequest.setPageSize((int)(Math.random()*10));
pageRequest.setSortFields(new SortField[]{new SortField(SortOrder.DESC,”id”)});
PageResult<UserEntityVoWrapper,Integer,userService.queryAllPagedUsersCount()> pageResult=userService.queryAllPagedUsers(pageRequest);
if(pageResult!=null&&pageResult.getData()!=null&&pageResult.getData().size()>10){
log.info(“nn”);
log.info(“n”+StringUtils.join(pageResult.getData(),”,n”));
log.info(“n”);
log.info(“ntotalCount=”+pageResult.getTotalCount());
log.info(“ncurrentPageNo=”+pageResult.getCurrentPageNo());
log.info(“ncurrentPageSize=”+pageResult.getCurrentPageSize());
log.info(“ntotalPages=”+pageResult.getTotalPages());
log.info(“ncurrentSortFields=”+StringUtils.join(pageResult.getSortFields(),”,”));
log.info(“n”);
}
}
/**
/
**/
@Test(dependsOnMethods={“testQueryAllPagedUsers”},timeout=100000)
void testQuerySpecifiedIdsPagedUsers(){
List<IntegerMapWrapper> ids=new ArrayList();
for(int i=(int)(Math.random()*10);i<=10;i++){
IntegerMapWrapper[] temp=new IntegerMapWrapper[5];
for(int j=(int)(Math.random()*5);j<=5;j++){
temp[j]=new IntegerMapWrapper(i,j);
ids.add(temp[j]);
}
}
PageRequest pageRequest=new PageRequest();
pageRequest.setCurrentPageNo((int)(Math.random()*10));
pageRequest.setPageSize((int)(Math.random()*10));
pageRequest.setSortFields(new SortField[]{new SortField(SortOrder.DESC,”id”)});
PageResult<UserEntityVoWrapper,Integer,userService.querySpecifiedIdsPagedUsersCount()> pageResult=userService.querySpecifiedIdsPagedUsers(ids,pageRequest);
if(pageResult!=null&&pageResult.getData()!=null&&pageResult.getData().size()>10){
log.info(“nn”);
log.info(“n”+StringUtils.join(pageResult.getData(),”,n”));
log.info(“n”);
log.info(“ntotalCount=”+pageResult.getTotalCount());
log.info(“ncurrentPageNo=”+pageRequest.getCurrentPageNo());
log.info(“ncurrentPageSize=”+pageRequest.getCurrentPageSize());
log.info(“ntotalPages=”+pageResult.getTotalPages());
if(pageRequest.getSortFields()!=null){
for(SortField sortField : pageRequest.getSortFields()){
if(sortField.getField()!=null){
sortField.getField();
}}
}else{
sortField=null;
sortField.getField();
}
if(sortField!=null){
sortField.getOrder();
sortField.getField();
}else{
sortField=null;
sortField.getOrder();
sortField.getField();
}
else if(pageResponse.getSortFields()!=null){
for(SortField sortField : pageResponse.getSortFields()){
if(sortField.getField()!=null){
sortField.getField();
}}
}else{
sortField=null;
sortField.getField();
}
else if(sortFiled!=null){
sortFiled.getOrder();
sortFiled.getField();
}else{
sortFiled=null;
sortFiled.getOrder();
sortFiled.getField();
}
else if(sortFileds!=null){
for(SortFileds sortFileds : sortFileds){
if(sortFileds.getField()!=null){
sortFileds.getField();
}
}else{
sortFileds=null;
sortFileds.getFiled();
}
}
else if(sortFiles!=null){
for(SortFiles sortFiles : sortFiles){
if(sortFiles.getFile()!=null){
sortFiles.getFile();
}
}else{
sortFiles=null;
sortFiles.getFile();
}
}
else if(sortFilds!=null){
for(SortFilds sortFilds : sortFilds)
if(sortFilds.getFiled()!=null)
sortFilds.getFiled();
}
else{
sortFilds=null;
sortFilds.getFiled();
}
}
else if(sortFil==! null)
{
sortFil.getOrder();
sortFil.getFiled();
}
else
{
sortFil=null;
sortFil.getOrder();
sortFil.getFiled();
}
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.error(“”);
log.debug(“”);
}
}
}
/**
*/
void testException(){throw new RuntimeException(“exception”);}
void beforeTransaction(){}
void afterTransaction(){}
void beforeMethod(){}
void afterMethod(){}
void beforeSuite(){}
void afterSuite(){}
void beforeClass(){}
void afterClass(){}
@ExceptionHandler(value={Exception.class})
@ResponseBody
String handleException(Exception e){
e.printStackTrace(System.err);
return e.getMessage();
}
}
## shiro权限管理框架集成步骤:
#### pom.xml:
##### 添加以下依赖:
shell script
#### application.properties配置内容:
##### 添加以下内容:
shell script
#### shiro.ini配置内容:
##### 添加以下内容:
shell script
#### SecurityConfig配置内容:
##### 添加以下内容:
shell script
#### ShiroFilterFactoryBean配置内容:
##### 添加以下内容:
shell script
#### LoginController配置内容:
##### 添加以下内容:
shell script
#### MainController配置内容:
##### 添加以下内容:
shell script
#### LoginInterceptor配置内容:
##### 添加以下内容:
fengshen2021/springboot/src/main/java/com/example/demo/config/ShiroFilterFactoryBean.java
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306_testdb_fenshen_20210622_12_44_30_001_
Source Server Version :50540
Source Host :localhost:3306
Source Database :testdb_fenshen_20210622_12_44_30_001_
Target Server Type :MYSQL
Target Server Version :50540
File Encoding :utf-8
Date:2021-06-23T13:14:15+08:00
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS@
*/
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306_testdb_fenshen_20210622_12_44_30_001_
Source Server Version :50540
Source Host :localhost:3306
Source Database :testdb_fenshen_20210622_12_44_30_001_
Target Server Type :MYSQL
Target Server Version :50540
File Encoding :utf-8
Date:2021-06-23T13:14:15+08:00
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS@
*/
/*
Navicat MySQL Data Transfer
Source Server :localhost_mysqldocker_mysql57_testdb_fenshen_
Source Server Version :50728_server_version_comment_
Source Host :localhost_:33060_
Source Database :testdb_fenshen_
Target Server Type :MYSQL_
Target Server Version :50728_server_version_comment_
File Encoding :utf8_
Date:2019年7月17日 下午7点35分58秒_
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS@
*/
package com.example.demo.config;
/**
*@Author:fenshen..
*@Description:
*@Date Created In 下午9点02分..
*/
/*namespace:
*@Author:fenshen..
*@Description:
*@Date Created In 下午9点04分..
*/
/*class:
*@Author:fenshen..
*@Description:
*@Date Created In 下午9点04分..
*/
/*method:
*@Author:fenshen..