1、使用shiro进行认证登录之后,如果需要退出,那么需要调用shiro的logout,不然再次登录会报错
登录
@RequestMapping("/login")
public String login(String username, String password, RedirectAttributes redirectAttributes) {
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
if (!subject.isAuthenticated()) {
try {
subject.login(token);
return "admin/index";
} catch (UnknownAccountException e) {
redirectAttributes.addFlashAttribute("message", "用户名错误!");
} catch (IncorrectCredentialsException e) {
redirectAttributes.addFlashAttribute("message", "密码错误!");
}
return "redirect:/admin";
}
return "admin/index";
}
注销
@GetMapping("/logout")
public String logout(HttpSession session) {
//session清理用户
session.removeAttribute("user");
// shiro注销用户
Subject subject = SecurityUtils.getSubject();
subject.logout();
return "redirect:/admin";
}
2、Mybatis开启驼峰命令
mybatis:
type-aliases-package: com.cqupt.blog.entity
mapper-locations: classpath:com/cqupt/mapper/*.xml
configuration:
map-underscore-to-camel-case: true
- 作用:可以省写resultMap
不开启
<resultMap id="BaseResultMap" type="com.lvjing.domain.housekeeping.WxCleaner">
<result column="id" property="id"/>
<result column="cleaner_name" property="cleanerName"/>
<result column="cleaner_mobile" property="cleanerMobile"/>
<result column="current_order" property="currentOrder"/>
<result column="password" property="password"/>
<result column="remark" property="remark"/>
<result column="create_time" property="createTime"/>
</resultMap>
开启(只需要指定实体类)
<resultMap id="BaseResultMap" type="com.lvjing.domain.housekeeping.WxCleaner">
</resultMap>
但是sql语句不能这么写
select * from user where cleanerName=#{cleanerName}
3、PageHelper插件使用细节
- 静态方法,传递两个参数(当前页码,每页查询条数)
- 使用pageHelper 分页的时候,不再关注分页语句,查询全部的语句
- 自动的对 PageHelper.startPage 方法下的第一个sql 查询进行分页(不用写错位置了)
PageHelper.startPage(1,5);
//紧跟着的第一个select 方法会被分页
List<Country> list = countryMapper.findAll();
也就是说再Service层PageHelper.startPage(1,5);语句后一定是紧跟查询语句。