第04項目:淘淘商城(SpringMVC+Spring+Mybatis) 的學習實踐總結【次日】

淘淘商城(SpringMVC+Spring+Mybatis)  是傳智播客在2015年9月份錄製的,幾年過去了。因爲視頻裏課上老師敲的代碼和項目筆記有些細節上存在出入,只有根據日誌報錯信息做出適當的調整變動才能跑通項目。爲了方便廣大自學Java同仁的共同進步,我將持續更新這個網絡實戰項目練習的內容,着重指出符合當下開發環境下的內容勘誤修訂。html

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040java

第04項目:淘淘商城(SpringMVC+Spring+Mybatis) 的學習實踐總結【第一天】mysql

第04項目:淘淘商城(SpringMVC+Spring+Mybatis) 的學習實踐總結【次日】web

第04項目:淘淘商城(SpringMVC+Spring+Mybatis) 的學習實踐總結【第三天】spring

 

02.次日(框架整合,後臺系統搭建)

 


 

    @Override
    public User getUserById(Long id) {
        // 方法一:適用於任何字段的查詢
        Example example = new Example(User.class);
        example.createCriteria().andEqualTo("id", id);
        List<User> list = userMapper.selectByExample(example);
        if (list != null && list.size() > 0) {
            return list.get(0);
        } else {
            return null;
        }
        // 方法二:只適用於主鍵字段
        return userMapper.selectByPrimaryKey(id);
    }

mybatis逆向工程的根據example對象查詢的使用sql

1、Eclipse中運行提示報錯:[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

09.整合測試-ok.avi數據庫

在按照視頻中老師的講解循序漸進的操做下,Eclipse中運行提示報錯:[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?apache

這是由於我全新安裝的eclipse&maven沒有對編譯jdk版本配置致使。修正方法在個人CSDN博客  https://blog.csdn.net/qq_40993412/article/details/99322387api

 2、maven 編譯出錯 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean

eclipse在使用maven的tomcat7插件編譯java程序時,報錯 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project **-web: Failed to clean project: Failed to delete X:\**\target\tomcat\logs\access_logtomcat

出現這種錯誤,一般是因爲您已啓動了另外一個tomcat 進程或者運行的javaw.exe進程。控制檯先關掉以前運行的那個tomcat進程,再從新操做就好了。

 3、Mybatis的逆向工程。根據數據庫表生成實體類的java代碼。

File—>Import—>

 

generatorSqlmapCustom

 

由於該獨立項目的依賴的jar包被我更新成別的文件版本,因此顯示紅色歎號提示,須要咱們去Properties重新配置。

 把紅色小奶瓶的jar包依賴Remove後,點擊Apply and Close 就能解決這個問題。

 

3、 taotao商城項目視頻中老師所建立的web項目文件路徑和附件中筆記、教案提供的參考源代碼有出入致使的報錯

org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'itemController':
Could not autowire field: private com.taotao.service.ItemService com.taotao.controller.ItemController.itemService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [com.taotao.service.ItemService] found for dependency: 

說明原理的一個技術博客連接  https://blog.csdn.net/s740556472/article/details/54974074

4、log4j日誌輸出配置文件未設置致使的報錯解決

在視頻中,老師一直沒提log4j的配置文件log4j.properties的設定,致使後面徹底按照演示操做也會出現Eclipse提示報錯信息:

log4j:WARN No appenders could be found for logger
log4j:WARN Please initialize the log4j system properly

01.參考資料文件夾裏面有log4j.properties文件,咱們須要把它複製到項目resources目錄或將log4j.properties放到 \WEB-INF\classes文件夾中便可。

參考的技術博客:   關於控制檯輸出 警告 log4j:WARN No appenders could be found for logger

                                 將src文件夾設置爲source目錄方法

 

 5、因爲配置加載db.properties路徑錯誤致使的cannot be resolved to URL because it does not exist異常處理

參考的技術博客 https://blog.csdn.net/qinkang1993/article/details/57626434/

淘淘商城項目照着視頻作出現這個報錯,緣由是老師提供的教案配置信息和視頻演示有些小出入,須要咱們自行修改.xml配置文件。

把下圖中高亮的首個properties改爲視頻課中的實際文件路徑resource問題解決。

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/taotao?characterEncoding=UTF-8&serverTimezone=GMT%2B8 jdbc.username=root jdbc.password=root

 

 6、阿里巴巴的druid數據庫鏈接池配置文件 db.properties 要注意格式

2019年我在覆盤這個taotao商城項目的時候,能夠經過taotao-parent定義依賴的版本更新到

<druid.version>1.1.10</druid.version>

//北京時間東八區
serverTimezone=GMT%2B8 //或者使用上海時間
serverTimezone=Asia/Shanghai

在taotao-manager-web項目下的 src/main/resources 有spring文件夾,裏面的applicationContext-dao.xml 定義了druid數據庫鏈接池的配置信息。

 1 <!-- 數據庫鏈接池 -->
 2     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
 3  destroy-method="close">
 4         <property name="url" value="${jdbc.url}" />
 5         <property name="username" value="${jdbc.username}" />
 6         <property name="password" value="${jdbc.password}" />
 7         <property name="driverClassName" value="${jdbc.driver}" />
 8         <property name="maxActive" value="20" />
 9         <property name="initialSize" value="1" />
10         <property name="maxWait" value="60000" />
11         <property name="minIdle" value="5" />
12     </bean>

參考的技術博客  JDBC鏈接數據庫 mysql serverTimezone useSSL 時差

                               DRUID鏈接池的實用 配置詳解

 

 7、在taotao-manager-web項目下的pom.xml裏 ,配置tomcat插件的warSourceDirectory標籤。

  <build>
          <plugins>
            <!-- 配置Tomcat插件的warSourceDirectory -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                   <configuration>
                       <warSourceDirectory>webapp</warSourceDirectory>
                       <port>8080</port>
                       <path>/</path>
                   </configuration>
            </plugin>
        </plugins>
  
  </build>

 

 8、mybatis 整合spring之mapperLocations配置的問題

結論是:若是Mapper.xml與Mapper.class在同一個包下且同名,spring掃描Mapper.class的同時會自動掃描同名的Mapper.xml並裝配到Mapper.class。

若是Mapper.xml與Mapper.class不在同一個包下或者不一樣名,就必須使用配置mapperLocations指定mapper.xml的位置。

 

 9、分頁測試給web項目pom.xml導入分頁插件的依賴座標不能用最新版而要用附件中老師修改過的特別版本3.4.2-fix

 

// taotao-parent中定義的版本不能用5.X.X由於會拋出異常 <pagehelper.version>3.4.2-fix</pagehelper.version>

 

10、修改taotao-manager-mapper的pom.xml文件中添加以下內容:

<!-- 若是不添加此節點mybatis的mapper.xml文件都會被漏掉。 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

 

Service層的實現類 根據商品ID查詢方法:

    @Override
    public TbItem getItemById(long itemId) {
        //方法1、根據主鍵查詢
        //TbItem item = itemMapper.selectByPrimaryKey(itemId);
        //方法2、添加查詢條件,適用於任何字段的查詢
        //1.建立一個TbItemExample實例對象example
        TbItemExample example = new TbItemExample();
        //2.實例對象example.createCriteria()
        Criteria criteria = example.createCriteria();
        //3.criteria.andIdEqualTo()
        criteria.andIdEqualTo(itemId);
        //4.selectByExample(example)返回結果
        List<TbItem> list = itemMapper.selectByExample(example);
    
        if (list != null && list.size() > 0) {
            //從List集合中取出索引爲0的對象
            TbItem item = list.get(0);
            return item;
        }
        return null;
    }

 

http://localhost:8080/item/536563

 

11. Service層的查詢全部並分頁的代碼

    @Override
    public EUDataGridResult getItemList(int page, int rows) {
        // 查詢商品列表
        TbItemExample example = new TbItemExample();
        // 分頁處理
        PageHelper.startPage(page, rows);
        List<TbItem> list = itemMapper.selectByExample(example);
        // 建立一個返回值對象
        EUDataGridResult result = new EUDataGridResult();
        result.setRows(list);
        // 取記錄總條數
        PageInfo<TbItem> pageInfo = new PageInfo<TbItem>(list);
        result.setTotal(pageInfo.getTotal());
        return result;

    }

 

12.分頁查詢會報錯,緣由是淘淘項目mybatis的版本最高支持到3.2.8版本

    <!-- 集中定義依賴版本號 -->
    <properties>
        <junit.version>4.12</junit.version>
        <spring.version>4.3.25.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <mybatis.spring.version>1.3.3</mybatis.spring.version>
        <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
        <pagehelper.version>3.4.2-fix</pagehelper.version>
        <mysql.version>5.1.45</mysql.version>
        <slf4j.version>1.7.25</slf4j.version>
        <jackson.version>2.9.9.3</jackson.version>
        <druid.version>1.1.10</druid.version>
        <httpclient.version>4.5.6</httpclient.version>
        <jstl.version>1.2</jstl.version>
        <servlet-api.version>3.1.0</servlet-api.version>
        <jsp-api.version>2.2</jsp-api.version>
        <joda-time.version>2.9.9</joda-time.version>
        <commons-lang3.version>3.9</commons-lang3.version>
        <commons-io.version>2.6</commons-io.version>
        <commons-net.version>3.6</commons-net.version>
        <jsqlparser.version>0.9.1</jsqlparser.version>
        <commons-fileupload.version>1.4</commons-fileupload.version>
        <jedis.version>2.7.2</jedis.version>
        <solrj.version>4.10.3</solrj.version>
    </properties>

 

==============================

參考資料:

SpringBoot整合MyBatis逆向工程及 MyBatis通用Mapper實例詳解

okey

相關文章
相關標籤/搜索