第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Spring MVC 整合 SSM(上)

1. 前言

本節(jié)課程將和大家講解在 Spring MVC 項目中如何集成 MyBatis 。MybatisSpring MVC 項目提供了數(shù)據(jù)庫訪問能力,通過本次課程,你需要重點掌握集成的流程。本節(jié)課程通過一個登錄小案例引出對 MyBatis 的使用。

2. 集成流程

要把 MyBatis 集成到 Spring MVC 項目中,首先要做的第一件事情,便是添加 MyBatis 依賴包。僅僅添加 MyBatis 依賴包還不夠 ,因為 Spring MVC 并不直接支持 MyBatis,所以,需要借助于第三方的 mybatis-spring 插件包充當 MyBatisSpring MVC 之間的橋梁。

既然要連接到數(shù)據(jù)庫,數(shù)據(jù)源是不能少的,本節(jié)課程使用 DBCP 做數(shù)據(jù)庫連接池,使用 MySql 做臺臺數(shù)據(jù)存儲系統(tǒng)。

2.1 添加依賴包

打開項目的 pom.xml 文件,在其中添加如下內容:

<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>2.0.1</version>
</dependency>	
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.5.2</version>
</dependency>
<!-- 數(shù)據(jù)庫驅動包 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.21</version>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-dbcp2</artifactId>
	<version>2.1.1</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>5.1.13.RELEASE</version>
	<scope>compile</scope>
</dependency>

Tips:Spring MVC 連接數(shù)據(jù)庫時,需要添加 spring-jdbc 依賴包。

2.2 注冊組件

MyBatis 依賴 2 個很重要的核心組件:

  • SqlSessionFactory: 創(chuàng)建與數(shù)據(jù)庫的連接,用來創(chuàng)建管理 SqlSession 組件;
  • SqlSession: 提供相關的數(shù)據(jù)庫操作方法。

Spring MVC 項目添加的 mybatis-spring 依賴包中,提供了 2 個類似的組件。打開項目中的 RootConfig 類文件,在文件中添加如下的組件配置信息:

@Bean
public DataSource dataSource() {
	BasicDataSource basicDataSource = new BasicDataSource();
	basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
	basicDataSource.setUrl("jdbc:mysql://localhost:3306/mystus");
	basicDataSource.setUsername("root");
	basicDataSource.setPassword("abc123");
	// 其它與數(shù)據(jù)庫連接池有關的配置
	return basicDataSource;
}
@Bean(name="sqlSessionFactory")
public SqlSessionFactoryBean SqlSessionFactory() {		
	SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
	//注入數(shù)據(jù)源組件
	sqlSessionFactoryBean.setDataSource(this.dataSource());
	//指定 MyBatis 主配置文件的位置
	Resource configResource=new ClassPathResource("com/hm/config/mybatis-config.xml");	
	sqlSessionFactoryBean.setConfigLocation(configResource);
	return sqlSessionFactoryBean;
}
@Bean
public MapperScannerConfigurer scannerConfigurer() {
	//接口映射
	MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer();
	//依賴會話工廠
	mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
	//指定掃描的 DAO 接口位置
	mapperScannerConfigurer.setBasePackage("com.hm.web.dao");	
	return mapperScannerConfigurer;
}

解釋一下上面的 3 個 Bean :

  • BasicDataSource: DBCP 提供的數(shù)據(jù)源連接對象;
  • SqlSessionFactoryBean: 用來替代 MyBatis 中的 SqlSessionFactory
  • MapperScannerConfigurer: 用來指定 MyBatis 映射器的位置。

Tips: Spring MVC 中集成 MyBatis 時,可以讓 MyBatis 有自己獨立的配置文件,也可以沒有。但一般情況下,建議還是提供。如下面的代碼。

Resource configResource=new ClassPathResource("com/hm/config/mybatis-config.xml");	
sqlSessionFactoryBean.setConfigLocation(configResource);

所以,需要創(chuàng)建一個 mybatis-config.xml 文件。

圖片描述

3. 登錄功能

做好了前面的基礎配置后,現(xiàn)在實現(xiàn)登錄功能。

登錄功能的業(yè)務描述很簡單:登錄者輸入個人的用戶名和密碼,發(fā)送請求到服務器,由服務器端的控制器從數(shù)據(jù)庫中檢查是否存在此登錄者的信息。

所以,在完成登錄功能之前,先在 MySQL 數(shù)據(jù)庫中創(chuàng)建一張 user 表:

圖片描述

3.1 創(chuàng)建登錄頁面

<h1>用戶登錄</h1>
<form action="user/login" method="post">
	姓名:<input name="userLoginName" value="" type="text"> 
	<br />
	密碼:<input name="userPassword" value="" type="password">
	<br />
	<input name="btnLogin" value="登錄" type="submit">
	<input name="btnRe" value="重置" type="reset">
</form>

Tips: 當使用者點擊登錄按鈕,發(fā)送登錄請求之前,可以在客戶端使用 JS 驗證數(shù)據(jù)格式的合法性。

既然是 OOP 編碼,自然少不了構建用戶類,此類的數(shù)據(jù)結構與用戶表的表結構有對等關系。

public class User {
	private Integer userId;
	//登錄名
	private String userLoginName;
	//真實姓名
	private String userName;
	private String userPassword;
}

3.2 創(chuàng)建映射器接口

MyBatis 是一個很有意思的地方,可以使用接口的方式映射對應的 SQL 語句,這個接口也叫映射器。

public interface UserMapper {
	@Select("SELECT user_id userId,user_login_name userLoginName ,user_password userPassword
	FROM user where user_login_name=#{userLoginName}")
	public User getUser(String  userLoginName);
}

SQL 語句可以使用 @select 等類似注解直接放置在映射器的方法之上。也可以把 SQL 語句存放在 XML 文件中。

如果 SQL 存放在 XML 中,官方文檔有 2 點建議:

  • XML 的文件名最好保持和映射器接口同名,如 UserMapper.xml;
  • 文件建議放在 UserMapper 接口所在的包中。MyBatis 能根據(jù)接口位置自動找到 XML 文件。

UserMapper.xml 內容如下面所示:

<mapper namespace="com.mk.web.dao.UserMapper">
<select id="getUser">
	SELECT user_id userId,user_login_name userLoginName ,user_password userPassword 
	FROM user where user_login_name=#{userLoginName}
</select>
</mapper>

Tips: 建議大家使用 MyBatis 時,SQL 語句保存在 XML 文件中。SQL 語句放置在接口之上,SQL 語法和 JAVA 語法混合在一起,不便于維護。XML 文件的命名和位置最好采用官方建議的,如此,不用再做過多設置,MyBatis 就可以找到 XML 文件。

3.3 測試

創(chuàng)建處理登錄請求的控制器:

@Autowired
private UserMapper UserMapper;	

@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(User user,ModelMap map) {
	String pwd=user.getUserPassword();
	user= this.UserMapper.getUser(user.getUserLoginName());
	if(user!=null) {
		if (user.getUserPassword().equals(pwd)) {
			map.addAttribute("loginUser", user);
		return "index";
	}
}
	return "fail";
}

打開瀏覽器,進入登錄頁面。

圖片描述

點擊登錄后,進入控制器,驗證當前登錄者的身份,驗證通過,進入成功頁面,驗證不通過,進入失敗頁面。

3. 小結

本章節(jié)和大家一起講解了在 Spring MVC 項目中如何使用 MyBatis JDBC 框架。整個過程和單獨使用 MyBatis 沒有什么太多不同。差異在于,需要引入一個中間模塊,作為 MyBatis 和 Spring MVC 之間的橋梁。 引入的中間模塊提供有專用于 Sprig MVC 項目的 2 大組件:

  • SqlSessionFactoryBean;
  • MapperScannerConfigurer。

利用這 2 大組件便能在 Spring MVC 中構建起和 MyBatis 核心模塊之間的連接。