【Spring4 MVC】(三)-連接MySQL數(shù)據(jù)庫

1. 開發(fā)環(huán)境(部分)

基于原有環(huán)境

  • MyBatis 3.3.0
  • MyBatis-Spring 1.2.3
  • MySQL 5.5.47

2. 文件結(jié)構(gòu)

2.1 項目目錄

新增User(entity),UserDao(Repository)剖笙,WebContextConfig(beans.xml)
對hello.html、HelloController稍作修改

文件結(jié)構(gòu).png

2.2 pom.xml 添加部分依賴

 <!--僅包含部分台诗,詳見源碼pom文件-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!--mybatis相關(guān)依賴-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.2.3</version>
    </dependency>
    <!-- 導入Mysql數(shù)據(jù)庫鏈接jar包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>
    <!-- 連接池包 -->
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>1.6</version>
    </dependency>

3. 代碼編寫

3.1 User.java

package com.practice;

/**
 * Created by SXY on 2016/1/26.
 */
public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

3.2 UserDao.java

package com.practice;

import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

/**
 * 數(shù)據(jù)庫的增刪查改等操作在這里執(zhí)行
 * MyBatis MapperScan 會掃描到這里孙蒙,完成sql語句與相關(guān)操作語句的映射
 * Created by SXY on 2016/1/26.
 */
@Repository
public interface UserDao {

    @Select("select * from user_info where name=#{name} limit 1")
    User getOneUser(String name);

}

3.3 WebContextConfig.java

package com.practice;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**
 * 類似于spring-context.xml或者beans.xml
 * MapperScan用于掃描Mapper映射接口,比如本例中的 UserDao
 * MapperScan几苍、ComponentScan具體的使用方法 跟之前的ComponentScan 完全相同 此處便不再贅述
 * Created by SXY on 2016/1/26.
 */
@Configuration
@MapperScan(basePackages = "com.practice")
@ComponentScan(basePackages = "com.practice")
public class WebContextConfig {

    @Bean
    public DataSource getDataSource() {
        BasicDataSource dataSource = new BasicDataSource();
//        數(shù)據(jù)庫連接配置
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        return dataSource;
    }

//    事務管理
    @Bean
    public DataSourceTransactionManager transactionManager() {
        return new DataSourceTransactionManager(getDataSource());
    }

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(getDataSource());
        return sqlSessionFactory.getObject();
    }
}

3.4 修改 HelloController.java

package com.practice;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by SXY on 2016/1/18.
 */
// 聲明為controller控制器,捕獲請求并處理請求
@Controller
public class HelloController {

//    注入UserDao
    @Autowired
    private UserDao  userDao;

//    捕獲 /hello 請求陈哑,利用hello(Model model) 處理請求妻坝,并返回‘hello’,交給Thymeleaf 處理
//    hello 對應html文件名惊窖。model 作為信息的載體刽宪,封裝各類變量、對象
    @RequestMapping("/hello")
    public String hello(Model model) {

//        獲取XiaoMing的相關(guān)信息
        User user = userDao.getOneUser("XiaoMing");

        model.addAttribute("name", user.getName());
        model.addAttribute("age", user.getAge());

        return "hello";
    }
}

3.6 修改 hello.html

<!-- 該文件要放置在 resources/templates/下 -->
<!DOCTYPE html>
<!-- 添加 Thymeleaf 命名空間-->
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Spring4 MVC</title>
</head>
<body>
    <p th:text="'Hi,My name is ' + ${name} +  ','+'愛沐 '+${age}+' 葉子歐德'" />
</body>
</html>

4. 測試

4.1 MySQL 測試數(shù)據(jù)表準備

測試表.png

4.2 運行 ‘ 程序 ’

測試成功.png

小結(jié)

本例選用的數(shù)據(jù)持久層框架是 MyBatis界酒,各位可以根據(jù)自己的情況選擇合適的框架圣拄。配置過程大同小異。
注意maven 依賴的引入毁欣,以及相關(guān)bean的添加庇谆。Spring 官方DataAccess文檔
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#spring-data-tier

源碼地址:http://git.oschina.net/tobe/Spring4MVC/tree/connect_mysql/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岳掐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饭耳,更是在濱河造成了極大的恐慌串述,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哥攘,死亡現(xiàn)場離奇詭異剖煌,居然都是意外死亡,警方通過查閱死者的電腦和手機逝淹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門耕姊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栅葡,你說我怎么就攤上這事茉兰。” “怎么了欣簇?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵规脸,是天一觀的道長。 經(jīng)常有香客問我熊咽,道長莫鸭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任横殴,我火速辦了婚禮被因,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衫仑。我一直安慰自己梨与,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布文狱。 她就那樣靜靜地躺著粥鞋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞄崇。 梳的紋絲不亂的頭發(fā)上呻粹,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音苏研,去河邊找鬼等浊。 笑死,一個胖子當著我的面吹牛楣富,可吹牛的內(nèi)容都是我干的凿掂。 我是一名探鬼主播伴榔,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼纹蝴,長吁一口氣:“原來是場噩夢啊……” “哼庄萎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起塘安,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤糠涛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兼犯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忍捡,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年切黔,在試婚紗的時候發(fā)現(xiàn)自己被綠了砸脊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡纬霞,死狀恐怖凌埂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诗芜,我是刑警寧澤瞳抓,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站伏恐,受9級特大地震影響孩哑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翠桦,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一横蜒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秤掌,春花似錦愁铺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孟岛,卻和暖如春瓶竭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渠羞。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工斤贰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人次询。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓荧恍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子送巡,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容