在上一篇博客,引入mybatis框架的基礎上,結合spring-mvc,實現代碼的進一步簡化。
操作:
1.新建maven的web工程:
項目整體視圖:(后面會一個個新建,這里總覽一下)
2.導包:
<!--數據庫操作--> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!--負責在容器中找東西--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!--創建一個容器--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!--讀spring.xml new類--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!--相當於servlet--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!--連接池--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> <!--mysql--> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--事務管理器--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!--用於事務管理器連接數據庫--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!--mybatis和spring連接橋梁--> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <!--自動轉json--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency> <!--自動轉json--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <!--自動轉json--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency>
3.編寫實體類及三層結構(service層、DAO層、控制層)
/** * 實體類 * */ public class Bank { private int id; private String name; private int money; //自行補全構造器、get/set方法、重寫toString } /** * DAO接口層 * */ public interface BankDAO { public List<Bank> findAll(); public Bank findOne(int id); } /** * services層 * */ @Service // <bean id = "userService" class = "com.zyp.myssm.services.UserService"/> public class BankService { @Resource private BankDAO bdao; public List<Bank> findAll(){ return bdao.findAll(); } public Bank findOne(int id){ return bdao.findOne(id); } } /** * controller層 * */ @RestController // 全是servlet , 所有都返回json public class InitCtrl { // 不寫名字, spring會自動用類型去獲得對象getBean(UserService.class) @Resource private BankService bs; // 把每個方法看成一個小的servlet @RequestMapping("/init.do") public List<Bank> init() {
// 下面注釋掉的部分,是通過SSM從數據庫拉出來的數據直接上傳到hdfs上,不屬於SSM范疇,如有需要,記得導包
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
//FileSystem fs = null;
//try {
//fs = FileSystem.get(new URI("hdfs://192.168.192.200:9000"), new Configuration());
//} catch (IOException e) {
//e.printStackTrace();
//} catch (URISyntaxException e) {
//e.printStackTrace();
//}
//try {
//FSDataOutputStream fos = fs.create(new Path("/log/a.txt"));
//List<Bank> lst = bs.findAll();
//for (Bank bank : lst) {
//String str = String.format("%s,%s,%s\n",bank.getId(),bank.getName(),bank.getMoney());
//fos.write(str.getBytes());
//}
//fos.flush();
//fos.close();
//fs.close();
//} catch (IOException e) {
//e.printStackTrace();
//}
return bs.findAll();
}
@RequestMapping("/find.do")
public Bank find(int id) {
return bs.findOne(id);
}
}
4.配置文件
按照1步驟里的目錄結構,新建好resources包,這里存放的都是所有配置文件。
1.> 其下的mapper包存放的xml文件,就是對應你實體類相應的sql執行語句(增刪改查等)。
2.> 其下的spring.xml文件(注意與mapper同級!都在resources包下!!!不要寫在mapper包里!!!),這里其實就是SSM框架中的spring-mvc,里面配置你鏈接數據庫的驅動(同之前博客2中的mybatis)以及第三方spring-mybatis的bean(相當於Java中的類)。通過這里的配置信息,去映射到你的項目、數據源、整個DAO層
3.> webapp包下的WEB-INF下的web.xml文件,就是我們之前最初始的各個servlet,通過它的配置信息來掃描你的所有servlet(也就是我們Java類中的controller控制層)。
下面我們逐個創建:
1.在main包下,新建resources文件夾(與java文件夾同級),並且標記為Resourcces Root。
2.在resources包下新建mapper包,其下新建bank.xml文件,內容如下:(這里用查詢舉例,一個不帶參數,一個帶參數按照id查找。增刪改同理)
<?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.zyp.myssm.dao.BankDAO"> <select id="findAll" resultType="com.zyp.myssm.entity.Bank"> select * from Bank </select> <select id="findOne" resultType="com.zyp.myssm.entity.Bank" parameterType="int"> select * from Bank where id=#{id} </select> </mapper>
3.在resources包下新建spring.xml文件(注意文件格式!!!)
內容如下:
<?xml version='1.0' encoding='UTF-8'?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:annotation-config></context:annotation-config> <context:component-scan base-package="com.zyp.myssm"></context:component-scan> <!--啟動mvc--> <mvc:annotation-driven></mvc:annotation-driven> <!--以下是mybatis的鏈接數據庫的整合--> <!--配置一個數據源--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://192.168.192.200:3306/mydemo?useSSL=false"></property> <property name="username" value="root"></property> <property name="password" value="okok"></property> <property name="initialSize" value="30"></property> <property name="maxActive" value="1000"></property> <property name="maxWait" value="1000"></property> <property name="minIdle" value="30"></property> </bean> <!--自動事務 可以讓用戶不commit--> <!--配置事務管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!--自動提交配置--> <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven> <!--配置spring和mybatis整合--> <!--這不是mybatis的類,是第三方的 mybatis-spring--> <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value="classpath*:mapper/*.xml"></property> </bean> <!--掃描所有的dao接口--> <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.zyp.myssm.dao"></property> </bean> </beans>
4.最后就是maven自帶的web.xml文件(可能建的工程或者版本不一,沒有就自己手動添加一個),內容如下:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
5.配置tomcat
進來后,點擊左上角+號
下拉找到tomcat,選擇本地
接下來逐個對照配置
然后選擇Deployment項進行編輯
以上就是全部配置及代碼。確保你的數據庫能連接上,運行tomcat,彈出的頁面后添加對應的servlet名稱(推薦使用postman)。