mac下IDEA配置Spring框架+mybatis+maven配置管理的web專案過程詳解
下面詳細講一下mac下怎麼利用IDEA來搭建一個利用spring框架+maven配置管理的web專案
1.再IDEA裡新建一個maven project,填入建立專案所必要的資訊
2.我們要利用spring框架或mybatis就得把與其相關的內容引入進專案啊,利用maven強大的依賴管理能力可以很方便的做到這一點。只需要在pom檔案裡填入相關的依賴即可,但是大部分人會蒙B,這個網站點選開啟連結可以很好的解決你的pom檔案配置問題。下面給出我的專案的pom檔案核心內容
<dependencies> <!--支援servlet的jar包--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!--springmvc框架--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>RELEASE</version> </dependency> <!--spring jdbc封裝--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>RELEASE</version> </dependency> <!--mybatis資料庫框架--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>RELEASE</version> </dependency> <!--官網原話是An easy-to-use Spring bridge for MyBatis sql mapping framework--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>RELEASE</version> </dependency> <!--資料庫連線池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>RELEASE</version> </dependency> <!--mysql資料庫連線--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> </dependencies>
這裡要說的是第一次引入這些依賴的時候你本地的maven庫是沒有那些依賴的,找不到的依賴會顯示紅名,但是maven很方便,只要你點選螢幕右上角的Enable Auto-Import,它就可以從遠端maven庫裡自動的拉到你本地給你用,下圖可以看出,使用spring框架所需的依賴已經來進來你的專案了
3.是不是發現現在專案的結構和你之前使用Eclipse時的web專案不同?別怕,引入就好,點選下圖中的project structure,新增一個新的Module就好
繼續按照下圖示操作即可
4.先寫程式碼再配置其它檔案吧,主要要有資料庫一張表的一條記錄對應的實體類,通常稱為xxxbean,dao層提供資料庫的介面,service層面向用戶提供資料庫訪問服務,Controller是dispatch-servlet根據url mapping將請求轉發過去的控制類,本質上也是個servlet,它的內部根據進一步細化的請求資訊呼叫相關的方法,主要進行實現業務的邏輯並返回資料或是一個view,返回view的話需要經過配置的viewresolver“組裝”好頁面返回給請求者。大體的結構是這樣的:
我講的也不定是全對。歡迎批評指正,上面的內容是我自己學習springmvc時的理解。為了方便大家學習給出程式碼好了,反正也特別簡單,而且強大的IDEA好多東西都能生成了,尤其是像實體類那種只有setter和getter的類。。。
User類需要和資料庫的表能對應起來,表特別簡單,是這樣的package edu.tju.bwju.bean; public class User { private int id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
UserDao提供了一個根據id查詢user並返回一個User物件的方法
package edu.tju.bwju.dao;
import edu.tju.bwju.bean.User;
public interface UserDao {
public User selectById(int id);
}
UserService提供了一個根據id查詢user並返回一個User物件的方法,但是它內部自動裝載了一個UserDao物件,並依靠它的方法來獲得查詢結果。這就是為什麼要同時有Dao層和Service層,因為Service層還可以利用Dao層的最一般的介面做很多組合,讓資料庫的使用更加靈活。
package edu.tju.bwju.service;
import org.springframework.beans.factory.annotation.Autowired;
import edu.tju.bwju.bean.User;
import edu.tju.bwju.dao.UserDao;
import org.springframework.stereotype.Service;
@Service
public class UserService implements UserDao{
@Autowired
private UserDao userDao;
public User selectById(int id) {
return userDao.selectById(id);
}
}
dispatcher-servlet將請求的url中與user相關的請求轉發至UserController,controller內部進一步細化,比如mapping到 .../user/hello就會呼叫hello方法,hello方法完成查詢表中id為1的使用者並將使用者姓名輸出至控制檯的業務邏輯,然後返回給使用者一個頁面,即index.jsppackage edu.tju.bwju.controller;
import edu.tju.bwju.bean.User;
import edu.tju.bwju.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value="hello",method = RequestMethod.GET)
public String hello(){
User tmp = userService.selectById(1);
System.out.println(tmp.getName());
return "index";
}
}
usermapper.xml裡面寫具體的sql語句,注意每一個方法的標籤型別,不只有select啊,具體的更復雜的寫法大家上網搜尋吧。也要注意方法的id和你在dao裡定義的方法是對應的啊,這樣才能讓你呼叫dao層的方法時去做sql mapping啊。
<?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="edu.tju.bwju.dao.UserDao">
<select id="selectById" parameterType="int" resultType="User">
select * from user where id = #{id}
</select>
</mapper>
5.首先配置spring-mybatis.xml,它裡面的內容主要就是對資料庫的相關行為的約束,具體的看註釋應該很好理解
<?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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 配置資料來源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<!--<property name="url" value="${offline_db_url}"/>-->
<property name="username" value="root"/>
<property name="password" value="123456"/>
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1"/>
<property name="minIdle" value="1"/>
<property name="maxActive" value="20"/>
<!-- 配置獲取連線等待超時的時間 -->
<property name="maxWait" value="60000"/>
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一個連線在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!-- 關閉PSCache,並且指定每個連線上PSCache的大小 -->
<property name="poolPreparedStatements" value="false"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="-1"/>
<!-- 配置監控統計攔截的filters -->
<property name="filters" value="stat"/>
</bean>
<!--MyBatis factory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<property name="typeAliasesPackage" value="edu.tju.bwju.bean"/>
</bean>
<!--sqlSession-->
<!--<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">-->
<!--<constructor-arg index="0" ref="sqlSessionFactory" />-->
<!--<constructor-arg index="1" value="BATCH" />-->
<!--</bean>-->
<!--mapper 自動對映, 配置sqlSessionFactoryBeanName屬性 決定優先載入 sqlSessionFactory-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="edu.tju.bwju.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!--<bean id="awareDataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">-->
<!--<property name="targetDataSource" ref="masterDateSource"/>-->
<!--</bean>-->
<!-- 配置事務管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
6.配置web.xml,主要是告訴tomcat誰來做dispatcher-servlet,以及dispatcher-servlet從什麼路徑開始做url mapping
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
7.配置dispatcher-servlet.xml,它除了引入spring-mybatis.xml外還幹了一件很重要的事,指定了誰是viewresolver及viewresolver的行為。
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<import resource="classpath:spring-mybatis.xml"/>
<context:component-scan base-package="edu.tju.bwju"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"></property>
</bean>
<!--<mvc:default-servlet-handler/>-->
<mvc:annotation-driven/>
</beans>
8.都配置好了,是騾子是馬,點選綠色小箭頭啟動tomcat,tomact配置就不教了吧。。。
控制檯輸出
頁面返回index.jsp的內容
更復雜的內容顯示和功能實現也是也是以此為基礎的,到這裡就配置完成了,希望大牛發現我的不足之處批評指正,也希望更多朋友能走出初入框架配置的迷茫。。。希望別誤人子弟啊。。。
您的幫助是我莫大的鼓勵!喜歡的話可以掃描左側二維碼隨意打賞哈~支付寶微信都可以,歡迎看看我的其他文章~
這篇文章目前收到了不少朋友的支援,在這裡謝謝你們了,打賞有價,支援與鼓勵無價~