1. 程式人生 > >【新手須知】Spring Boot 2.0.0 + MyBatis + Shiro + Swagger 開發專案踩坑記錄

【新手須知】Spring Boot 2.0.0 + MyBatis + Shiro + Swagger 開發專案踩坑記錄

寫在前面

Swagger 2.8.0
Spring Boot 2.0.0.RELEASE
Shiro 1.4.0
Mybatis 1.3.1

填坑

踩坑一:
MyBatis xml檔案中引數名選擇
若UserMapper.java寫法為

User findByUserId(int userId);

則在UserMapper.xml裡引數名只能為arg0、arg1…

<select id="findByUserId" resultType="com.pojo.User">
        SELECT * FROM user WHERE id=#{arg0}
</select
>

想要改成

<select id="findByUserId" resultType="com.pojo.User">
        SELECT * FROM user WHERE id=#{userId}
</select>

則UserMapper.java需要修改為

User findByUserId(@Param("userId") int userId);

踩坑二:
整合Shiro框架後,重定向導致前端頁面佈局錯亂

    //放行靜態資源
    filterChainDefinitionMap.put("/css/**", "anon"
); filterChainDefinitionMap.put("/js/**", "anon"); filterChainDefinitionMap.put("/layui/**", "anon"); filterChainDefinitionMap.put("/pm/login", "anon");

把前端所有靜態資源都免去認證

踩坑三:
整合Shiro + Swagger,Swagger頁面無法檢視介面
解決辦法與上面類似

/**
 * @Mark 線上介面文件路徑
 * @URL http://localhost:8080/swagger-ui.html
 */
 filterChainDefinitionMap.put("/swagger-ui.html"
,"anon"); filterChainDefinitionMap.put("/static/**", "anon"); filterChainDefinitionMap.put("/swagger/**","anon"); filterChainDefinitionMap.put("/webjars/**", "anon"); filterChainDefinitionMap.put("/swagger-resources/**","anon"); filterChainDefinitionMap.put("/v2/**","anon");

踩坑四:
分模組,啟動後報錯:缺失檔案
Application主程式新增自動掃包程式碼

@ComponentScan(basePackages = {"com.*"})

最後說一個題外話:
就是IEDA在debugger的時候執行特別慢,那有可能是把斷點打在方法上了,改成打在方法內部就好了。