Spring+SpringMVC+Mybatis開發導航

前提:寫此文章的內容,主要是讓自己熟悉一遍。借鑑了別人的教程

SSM+MAVEN 開發流程
1.配置prom.xml:
功能:主要是jar包的下載
2.配置Spring的xml文件,爲了清晰可見,Spring分爲3個進行配置
a.spring-dao.xml:
數據庫鏈接的相關參數
配置數據庫連接池
配置鏈接屬性,可以不讀文件在這裏直接寫死
配置c3p0
配置SqlSessionFactory(mybatis)
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入數據庫連接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 掃描entity包 使用別名 -->
<property name="typeAliasesPackage" value="com.soecode.lyf.entity" />
<!-- 掃描sql配置文件:mapper需要的xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml" />
</bean>
掃描dao接口,動態實現dao接口,不需要daoImpl,sql和參數都寫在xml中
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- 給出需要掃描Dao接口包 -->
<property name="basePackage" value="com.soecode.lyf.dao" />
</bean>
配置mybatis-config.xml
使用自增主鍵
使用列別名
開啓駝峯命名轉換 create_time -> createTime
<configuration>
<!-- 配置全局屬性 -->
<settings>
<!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 -->
<setting name="useGeneratedKeys" value="true" />


<!-- 使用列別名替換列名 默認:true -->
<setting name="useColumnLabel" value="true" />


<!-- 開啓駝峯命名轉換:Table{create_time} -> Entity{createTime} -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
b.spring-service.xml
掃描service包所有註解 @Service
<context:component-scan base-package="com.soecode.lyf.service" />
配置事務管理器,把事務管理交由spring來完成
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入數據庫連接池 -->
<property name="dataSource" ref="dataSource" />
</bean>
配置基於註解的聲明式事務,可以直接在方法上@Transaction
<tx:annotation-driven transaction-manager="transactionManager" />
c.spring-web.xml也就是Controller
開啓Spring註解
<mvc:annotation-driven>
對靜態資源的處理
<mvc:default-servlet-handler>
配置jsp 顯示ViewResolver,例如在controller中某個方法返回一個string類型的"login",實際上會返回"/WEB-INF/login.jsp"
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
掃描web層 @Controller
<context:component-scan base-package="com.soecode.lyf.web"/>
d.logback.xml
3.在entity包中添加實體類
和表對應的字段一樣+getset方法
4.在dao中新建接口
名字和實體類一樣
一個dao類只對應一個表
5.爲dao接口寫mapper.xml
<mapper namespace="com.soecode.lyf.dao.BookDao">
<!-- 目的:爲dao接口方法提供sql語句配置 -->
<select id="queryById" resultType="Book" parameterType="long">
<!-- 具體的sql -->
SELECT
book_id,
name,
number
FROM
book
WHERE
book_id = #{bookId}
</select>
<mapper namespace="com.soecode.lyf.dao.AppointmentDao">
<insert id="insertAppointment">
<!-- ignore 主鍵衝突,報錯 -->
INSERT ignore INTO appointment (book_id, student_id)
VALUES (#{bookId}, #{studentId})
</insert>
namespace是該xml對應的接口全名,select和update中的id對應方法名,resultType是返回值類型,parameterType是參數類型(這個其實可選),最後#{...}中填寫的是方法的參數。
6.寫dao層單元測試
在寫測試之前要讓程序讀入Spring-dao接和mybatis等配置文件
@RunWith(SpringJUnit4ClassRunner.class)
// 告訴junit spring配置文件
@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml" })
7.在service寫入業務接口
8.寫serviceImp。實現類
9.最後寫web層也就是控制層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章