spring小例子-springMVC+mybits整合的小例子

来源:http://www.cnblogs.com/xuejupo/archive/2016/03/16/5285167.html
-Advertisement-
Play Games

這是在前一個例子的基礎上,利用springMVC,整合了一下mybits,通過查詢mysql資料庫得到結果然後展示給前臺的一個簡單的網站demo。


       這段時間沒更博,找房去了。。。   吐槽一下,自如太坑了。。。承諾的三年不漲房租,結果今年一看北京房租都在漲也跟著漲了。。。 而且自如太貴了,租不起了。。 突然有點理解女生找對象要房了。。   搬家太受罪了。。。

      今天更一下springMVC整合mybits形成最簡單的網站demo。

      大概效果就是這樣的:左邊是資料庫查詢結果,右邊是頁面訪問結果:

首先,一個簡單的springMVC小例子可以看這個http://www.cnblogs.com/xuejupo/p/5236448.html

      這是在這個基礎上增加了mybits的配置和對資料庫的訪問。

       在pom文件里增加對mybits的支持和druid數據源包:

<!-- mybits的基本依賴開始 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
        <!-- mybits的基本依賴結束 -->
        <!--第三方依賴包開始 -->
        <!-- 這是阿裡巴巴的druid數據源依賴 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>0.2.20</version>
        </dependency>

 配置mybits的配置文件

 
<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">

    <context:component-scan base-package="controller"></context:component-scan>
    <context:component-scan base-package="com.cainiaojava"></context:component-scan>
    <!-- 引入屬性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    <!-- 配置數據源 -->
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="initialSize" value="1" />
        <property name="maxActive" value="20" />
        <property name="minIdle" value="1" />
        <property name="maxWait" value="60000" />
        <property name="validationQuery" value="${validationQuery}" />
        <property name="testOnBorrow" value="true" />
        <property name="testOnReturn" value="false" />
        <property name="testWhileIdle" value="true" />
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <property name="minEvictableIdleTimeMillis" value="25200000" />
        <property name="removeAbandoned" value="true" />
        <property name="removeAbandonedTimeout" value="1800" />
        <property name="logAbandoned" value="true" />
        <property name="filters" value="mergeStat" />
    </bean>
    <!-- myBatis文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:/sqlMapper/*Mapper.xml" />
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.cainiaojava.dao.iface" />
        <!-- <property name="basePackage" value="druid-stat-interceptor" /> -->
        <!-- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> -->
    </bean>
</beans>

 在dispatcher_cainiao.xml中引用一下這個配置文件:

 
 <!-- 載入其他兩個配置文件 --> 
      <import resource="classpath:spring-mybits.xml" />

 資料庫的配置信息

 
#mysql連接配置參數
url=jdbc:mysql://localhost:3306/cainiao
username=cainiao
password=cainiao
validationQuery=select 1 from dual

 mybits的mapper文件:

 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cainiaojava.dao.iface.IUserManageDao">

    <!-- 查詢所有用戶-->
    <select id="getUsers" resultType="com.cainiaojava.beans.User">
        select * from user
    </select>
</mapper>

 然後就是修改一下控制類:

 
@Controller
@RequestMapping("demo")
public class DispatcherController {
    
    @Autowired
    private IUserManage userManage;
    @RequestMapping(method=RequestMethod.GET)
    public String printWelcome(ModelMap model) {  
        model.addAttribute("list", userManage.getUsers());
//        System.out.println("index.jsp");
        return "index";
    }  
}

然後就是後臺的邏輯跳轉了。

    首先,在控制類里註冊了用戶管理介面IUserManage:

/**  
 *  IUserManage : 用戶管理介面
 * @author xuejupo  [email protected] 
 * create in 2016-3-7 7:04:02    
 */
public interface IUserManage {
    List<User> getUsers();
}

       通過spring的註解,實現bean交給spring管理,註冊的介面可以找到實現bean:UserManager:

 
/**  
 *  UserManage : 用戶管理具體實現類,負責具體的代碼邏輯,調用dao層執行sql語句
 * @author xuejupo  [email protected] 
 * create in 2016-3-7 7:04:43    
 */

@Service("userManage")
public class UserManage implements IUserManage{
    @Autowired
    private IUserManageDao userManageDao;
    
    @Override
    public List<User> getUsers() {
        // TODO Auto-generated method stub
        return userManageDao.getUsers();
    }

}

    然後,在用戶管理類的實現類里,註冊了dao文件IUserManageDao:

 
/**  
 *  UserManageDao : mybits中的mapper文件實現sql的細節,此介面不用實現(dao只負責執行sql)
 * @author xuejupo  [email protected] 
 * create in 2016-3-7 7:13:14    
 */
@Component("userManageDao")
public interface IUserManageDao {
    /**
    * getUsers: 獲取所有的用戶,獲取用戶介面
    * @return 
    * List<User>  
     */
    public List<User> getUsers();
}

       在dao層介面中,介面的方法是不用實現的,dao類只負責執行sql(根據mapper文件中的namespace找到介面,然後找跟方法名對應的id執行)。

        執行效果就是這樣:

PS:   附件是我的整個工程的壓縮文件(裡面還有redis,不過暫時沒用到)。

        如果需要下載我的工程然後執行的話,需要修改的地方就是需要自己新建一個資料庫表(mysql)user,然後裡面4個欄位userId,userName,passwd,info。當然,也可以修改一下bean文件。

        需要修改一下資料庫配置文件jdbc.properties。

        以後更新得可能會慢很多了。it這行,最好的學習方法永遠是多用。  所以我想從零開始,利用spring和springMVC和mybits(可能會用到redis)造一個網站出來(初步打算是論壇)。不過因為公司也有工作,而且我的前端基礎薄弱。。 所以進度可能無法掌握。。。 我會在iteye和我的博客園實時更新網站的進度,也會把我遇到的問題和解決方法更新到這裡。

      博客園這裡上傳附件好不方便。。。   感興趣的朋友可以在這裡下載我的附件http://709002341.iteye.com/admin/blogs/2283664


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇從整體上介紹了 介面,從上一篇我們知道了 框架的最頂層實現是 類, 工廠類中提供的 、`newFixedThreadPool newCachedThreadPool ThreadPoolExecutor ThreadPoolExecutor`線程池的運行過程。 1.線程池狀態 既然要講運行過程
  • 本篇分為兩部分: 與別的語言不同,Swift 支持運算符的重載,運算符指的是“+,-,%,*”等操作運算符,從而使一些操作更加簡便。 在開發中,我們對於一些基本運算通常是這樣寫的: v3 的輸出結果為:3,7 但是,當這種二位數組過多時,如果我們依然用這種方式,我們的代碼將變得異常臃腫,程式員也會變
  • 首先要將#include <atlimage.h>加進來,開始時我加到stdafx.h中,但一直提示windows.h被重覆引入的問題,後將其加在別的頭文件中,就可以了.. --! 一、圖片的載入 如果需要在界面上顯示的是已經存在的圖片,那麼需要將待顯示的圖片載入至CImage對象之中,CImage
  • PHP的預設機制:每一次php請求,會有1/100的概率(預設值)觸發“session回收”。如果“session回收”發生,那就會檢查/tmp/sess_*的文件,如果最後的修改時間到現在超過了1440秒(gc_maxlifetime的值),就將其刪除,意味著這些session過期失效 文件一般為
  • java oop 1.面向過程的結構化程式設計弊端:方法和數據結構都是毫無規律的定義在程式中任何位置 方法定義和方法要處理的數據結構也都是分開定義2.對象:每new一次,就創建1個新對象,和原來的對象之間沒有影響3.需求中的名詞:對象 動詞:方法4.方法簽名:包含方法名和參數類型類表“順序”, 重載
  • 字元串表示的「true」轉換為布爾型的「true」
  • 在軟體系統中,I/O的速度要比記憶體的速度慢很多,因此I/O經常會稱為系統的瓶頸。所有,提高I/O速度,對於提升系統的整體性能有很大的作用。 在java標準的I/O中,是基於流的I/O的實現,即InputStream和OutPutStream,這種基於流的實現以位元組為基本單元,很容易實現各種過濾器。
  • & 160;& 160;& 160;& 160; "上一篇隨筆" 介紹了Gradle的安裝與任務管理,這篇著重介紹Gradle的內建任務(in built tasks)與自定義任務(custom tasks),藉助Gradle提供的眾多內建任務類型以及自己定製的任務類型,Java Web、Andro
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...