基礎知識css
Spring,SpringMVC,Mybatis html
Mysqjava
Eclipse,Mavenmysql
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL, `studentName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `studentSex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `studentAge` int(255) NULL DEFAULT NULL, `school` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `className` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES (1, '小明', '男', 14, '第一中學', '高三1班'); INSERT INTO `student` VALUES (2, '小紅', '女', 15, '第一中學', '高三2班'); INSERT INTO `student` VALUES (3, '小黃', '女', 14, '第一中學', '高三1班'); INSERT INTO `student` VALUES (4, '小藍', '男', 14, '第一中學', '高三2班'); SET FOREIGN_KEY_CHECKS = 1;
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.6</version> </dependency> <!-- commons Start --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <!-- 文件上傳支持(commons-io) --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!-- Logback相關依賴 Start(slf4j-api) --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- Logback相關依賴 Ends --> <!-- Fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.46</version> </dependency> <!-- Spring相關依賴 Start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jcl</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.5.RELEASE</version> </dependency> <!-- Spring相關依賴 Ends --> <!-- Druid(數據庫鏈接池) --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency> <!-- MyBatis相關依賴 Start --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- MyBatis相關依賴 Ends --> <!-- jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies>
# 配置說明 # driverClassName : 數據庫驅動的名稱 # url : 數據庫的地址 # username : 用戶名 # password : 密碼 # maxActive : 最大激活鏈接數 # initialSize : 鏈接池啓動時建立的初始化鏈接數量 jdbc.mysql.driverClassName=com.mysql.jdbc.Driver jdbc.mysql.url=jdbc:mysql:///shiro?useUnicode=true&characterEncoding=utf8 jdbc.mysql.username=root jdbc.mysql.password=root jdbc.mysql.maxActive=20 jdbc.mysql.initialSize=5
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd"> <!-- 加載相關資源文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:config.properties</value> </list> </property> <property name="fileEncoding" value="UTF-8"></property> </bean> <!-- 開啓註解掃描 --> <context:annotation-config/> <!-- 自動掃描的包名 --> <context:component-scan base-package="org.zyu"> <!-- 不控制 Controller註解,即與 Controller分離 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- 配置數據源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.mysql.driverClassName}"></property> <property name="url" value="${jdbc.mysql.url}"></property> <property name="username" value="${jdbc.mysql.username}"></property> <property name="password" value="${jdbc.mysql.password}"></property> </bean> <!-- SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 數據庫鏈接池 --> <property name="dataSource" ref="dataSource"/> <!-- 加載MyBatis的全局配置文件 --> <property name="mapperLocations"> <list> <value>classpath*:**/dao/**/*Mapper.xml</value> </list> </property> </bean> <!-- Mapper掃描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 掃描包路徑,若是須要掃描多個包,中間使用半角逗號隔開 --> <!-- 對**.dao包內進行掃描 --> <property name="basePackage" value="**.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <!-- 事務管理器,對MyBatis操做數據庫事務控制,Spring使用jdbc的事務控制類 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" scope="singleton"> <!-- 數據源dataSource在applicationContext-mybatis.xml中配置了 --> <property name="dataSource" ref="dataSource"/> </bean> <!-- 註解的事務管理@Transactional --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd"> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <!-- @ResponseBody返回JSON數據中文亂碼解決,注意,此配置必定要在<mvc:annotation-driven/>配置前面 --> <property name="messageConverters"> <list> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> <!-- 靜態資源映射(通用) --> <mvc:resources mapping="/css/**" location="/WEB-INF/css/" /> <mvc:resources mapping="/js/**" location="/WEB-INF/js/" /> <mvc:resources mapping="/img/**" location="/WEB-INF/img/" /> <mvc:resources mapping="/3rd/**" location="/WEB-INF/3rd/" /> <!-- 當上面要訪問的靜態資源不包括在上面的配置中時,則根據此配置來訪問 --> <mvc:default-servlet-handler /> <!-- 默認的註解映射的支持 --> <mvc:annotation-driven /> <!-- 開啓Controller註解支持 --> <!-- use-default-filters="false"只掃描指定的註解 --> <context:component-scan base-package="**.controller"> <!-- 不控制 Service 註解的事務.即與Service事務分離 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan> <!-- SpringMVC上傳文件時,需配置MultipartResolver處理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> <!-- 視圖解析器 --> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 攔截器配置 --> <mvc:interceptors> <!-- 可配多個攔截器,順序執行 --> <mvc:interceptor> <!-- [/**]表示全部url包括子url路徑 --> <mvc:mapping path="/**"/> <!-- 不攔截靜態資源路徑下的請求 --> <mvc:exclude-mapping path="/css/**"/> <mvc:exclude-mapping path="/fonts/**"/> <mvc:exclude-mapping path="/img/**"/> <mvc:exclude-mapping path="/js/**"/> <mvc:exclude-mapping path="/plugins/**"/> <mvc:exclude-mapping path="/upload/**"/> <bean class="org.zyu.intercepter.BaseHandlerInterceptor"/> </mvc:interceptor> </mvc:interceptors> </beans>
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 基本信息配置 --> <property name="localAppName" value="org.xujun"/> <property name="logHomeDir" value="${user.dir}/logs/logback"/> <property name="logbackLevel" value="DEBUG"/> <contextName>default</contextName> <!-- 控制檯輸出配置 --> <appender name="ConsoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <target>System.out</target> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</pattern> </encoder> </appender> <!-- 針對本項目配置的日誌 Start --> <appender name="LOCALAPP_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <Prudent>false</Prudent> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${logHomeDir}/${localAppName}/debug/debug-%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>10</MaxHistory> <!-- 日誌保留的個數 --> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> </layout> </appender> <appender name="LOCALAPP_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <Prudent>false</Prudent> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${logHomeDir}/${localAppName}/warn/warn-%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>10</MaxHistory> <!-- 日誌保留的個數 --> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> </layout> </appender> <appender name="LOCALAPP_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <Prudent>false</Prudent> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${logHomeDir}/${localAppName}/info/info-%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>10</MaxHistory> <!-- 日誌保留的個數 --> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> </layout> </appender> <appender name="LOCALAPP_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <Prudent>false</Prudent> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${logHomeDir}/${localAppName}/error/error-%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>10</MaxHistory> <!-- 日誌保留的個數 --> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> </layout> </appender> <!-- 針對本項目配置的日誌 Ends --> <!-- 針對第三方配置的日誌 Start --> <appender name="THIRDPART_DEFAULT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <Encoding>UTF-8</Encoding> <Prudent>false</Prudent> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${logHomeDir}/${localAppName}/thirdpart/thirdpart-%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>10</MaxHistory> <!-- 日誌保留的個數 --> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> </layout> </appender> <!-- 針對第三方配置的日誌 Ends --> <!-- 針對指定包配置的日誌 Start --> <logger name="test" addtivity="false" level="${logbackLevel}"> <appender-ref ref="ConsoleAppender"/> </logger> <logger name="org" addtivity="false" level="${logbackLevel}"> <appender-ref ref="ConsoleAppender"/> <appender-ref ref="THIRDPART_DEFAULT"/> </logger> <logger name="com" addtivity="false" level="${logbackLevel}"> <appender-ref ref="ConsoleAppender"/> <appender-ref ref="THIRDPART_DEFAULT"/> </logger> <!-- log4jdbc 專用配置 --> <logger name="jdbc.sqltiming" addtivity="false" level="${logbackLevel}"> <appender-ref ref="ConsoleAppender"/> </logger> <logger name="jdbc.resultsettable" level="INFO"></logger> <logger name="jdbc.sqlonly" level="OFF"></logger> <logger name="jdbc.audit" level="OFF"></logger> <logger name="jdbc.resultset" level="OFF"></logger> <logger name="jdbc.connection" level="OFF"></logger> <!-- 針對指定包配置的日誌 Ends --> <!-- 根logger<root>此標籤必須設置在最後面方可正常讀取,不然系統將識別爲無輸出控制. 只有一個level屬性,用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能設置爲INHERITED或者同義詞NULL. 默認是DEBUG. <root>能夠包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個loger. --> <root level="WARN"> <!-- <appender-ref ref="ConsoleAppender"/> --> </root> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd"> <!-- Spring的配置 Start --> <context-param> <description>配置spring讀取的xml文件,param-name是spring規定,spring自動加載如下內容.</description> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring的配置 Ends --> <!-- SpringMVC 配置 Start --> <!-- Web請求編碼過濾器,POST中文亂碼解決方案 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- DispatcherServlet 配置加載 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- 如下配置springmvc-servlet.xml放在包內或部署的classes目錄下的對應目錄下皆可. --> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- SpringMVC 配置 Ends --> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app>
好了,基本配置完成,接下來開始寫代碼。web
① 實體類設計spring
實體類的字段名須要和數據庫的一一對應sql
package org.zyu.bean; public class Student { private Integer id; private String studentName; private String studentSex; private Integer studentAge; private String school; private String className; public Student() { } public Student(Integer id, String studentName, String studentSex, Integer studentAge, String school, String className) { this.id = id; this.studentName = studentName; this.studentSex = studentSex; this.studentAge = studentAge; this.school = school; this.className = className; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public String getStudentSex() { return studentSex; } public void setStudentSex(String studentSex) { this.studentSex = studentSex; } public Integer getStudentAge() { return studentAge; } public void setStudentAge(Integer studentAge) { this.studentAge = studentAge; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Student [id="); builder.append(id); builder.append(", studentName="); builder.append(studentName); builder.append(", studentSex="); builder.append(studentSex); builder.append(", studentAge="); builder.append(studentAge); builder.append(", school="); builder.append(school); builder.append(", className="); builder.append(className); builder.append("]"); return builder.toString(); } }
② DAO類設計數據庫
DAO,即 Date Access Object,數據庫訪問對象,就是對數據庫相關操做的封裝,讓其餘地方看不到 JDBC 的代碼。express
在【org.zyu.dao】下建立【StudentMapper】接口(注意:接口的方法名須要和映射文件的id一致)apache
package org.zyu.dao; import java.util.List; import org.zyu.bean.Student; public interface StudentMapper { /** * 獲取學生列表 * @return List<Bean> */ List<Student> getStudentList(); }
在【org.zyu.dao】下建立【StudentMapper.xml】映射文件(注意:namespace:對應接口的相對路徑)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="org.zyu.dao.StudentMapper"> <!-- 查詢學生列表 --> <select id="getStudentList" resultType="org.zyu.bean.Student"> SELECT * FROM student </select> </mapper>
③ 業務類設計
在【org.zyu.service】包下建立【StudentService】接口:
package org.zyu.service; import java.util.List; import org.zyu.bean.Student; public interface StudentService { /** * 獲取全部學生列表 * @return */ List<Student> getStudentList(); }
在【org.zyu.service.impl】下建立【StudentServiceImpl】:
package org.zyu.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.zyu.bean.Student; import org.zyu.dao.StudentMapper; import org.zyu.service.StudentService; @Service public class StudentServiceImpl implements StudentService { @Autowired private StudentMapper mapper; public List<Student> getStudentList() { return mapper.getStudentList(); } }
④ 功能開發
在【org.zyu.controller】包下建立【StudentController】控制器:
package org.zyu.controller; 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.ResponseBody; import org.zyu.service.StudentService; import com.alibaba.fastjson.JSONObject; @Controller public class StudentController { @Autowired public StudentService studentService; @RequestMapping("/showList") @ResponseBody public JSONObject getStudentList() { JSONObject data = new JSONObject(); data.put("list", studentService.getStudentList()); return data; } }
運行項目。。。
輸入網址:http://localhost:8080/java_Excel/showList
項目地址:https://pan.baidu.com/s/1mg9AZUzMVomqRxduCWNE0Q 密碼:8z6j