淘淘商城(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
@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
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
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
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>
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的位置。
// 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
@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; }
<!-- 集中定義依賴版本號 --> <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