前言
說起整合自然離不開ssm,我本身并不太喜歡ORM,尤其是MyBatis,把SQL語句寫在xml里,尤其是大SQL,可讀性不高,出錯(cuò)也不容易排查。
開發(fā)環(huán)境
idea2016、SpringMVC4、Mybatis3
項(xiàng)目結(jié)構(gòu)
SSM整合
1、pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.autohome</groupId> 5 <artifactId>SpringMVC3</artifactId> 6 <packaging>war</packaging> 7 <version>1.0-SNAPSHOT</version> 8 <name>SpringMVC3</name> 9 <url>http://maven.apache.org</url>10 <dependencies>11 <dependency>12 <groupId>junit</groupId>13 <artifactId>junit</artifactId>14 <version>4.10</version>15 </dependency>16 <dependency>17 <groupId>org.springframework</groupId>18 <artifactId>spring-core</artifactId>19 <version>4.3.6.RELEASE</version>20 </dependency>21 <dependency>22 <groupId>org.springframework</groupId>23 <artifactId>spring-beans</artifactId>24 <version>4.3.6.RELEASE</version>25 </dependency>26 <dependency>27 <groupId>org.springframework</groupId>28 <artifactId>spring-context</artifactId>29 <version>4.3.6.RELEASE</version>30 </dependency>31 <dependency>32 <groupId>org.springframework</groupId>33 <artifactId>spring-web</artifactId>34 <version>4.3.6.RELEASE</version>35 </dependency>36 <dependency>37 <groupId>org.springframework</groupId>38 <artifactId>spring-context-support</artifactId>39 <version>4.3.6.RELEASE</version>40 </dependency>41 <dependency>42 <groupId>org.springframework</groupId>43 <artifactId>spring-webmvc</artifactId>44 <version>4.3.6.RELEASE</version>45 </dependency>46 <dependency>47 <groupId>org.springframework</groupId>48 <artifactId>spring-jdbc</artifactId>49 <version>4.3.6.RELEASE</version>50 </dependency>51 <dependency>52 <groupId>org.apache.velocity</groupId>53 <artifactId>velocity</artifactId>54 <version>1.6.2</version>55 </dependency>56 <dependency>57 <groupId>org.apache.velocity</groupId>58 <artifactId>velocity-tools</artifactId>59 <version>2.0</version>60 </dependency>61 <dependency>62 <groupId>org.mybatis</groupId>63 <artifactId>mybatis</artifactId>64 <version>3.4.2</version>65 </dependency>66 <dependency>67 <groupId>org.mybatis</groupId>68 <artifactId>mybatis-spring</artifactId>69 <version>1.3.0</version>70 </dependency>71 <dependency>72 <groupId>com.microsoft.sqlserver</groupId>73 <artifactId>sqljdbc4</artifactId>74 <version>4.0</version>75 </dependency>76 <dependency>77 <groupId>commons-dbcp</groupId>78 <artifactId>commons-dbcp</artifactId>79 <version>1.4</version>80 </dependency>81 </dependencies>82 <build>83 <finalName>SpringMVC3</finalName>84 </build>85 </project>
2、web.xml
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 5 <web-app> 6 <display-name>Archetype Created Web Application</display-name> 7 <!--告知javaEE容器,有那些內(nèi)容需要添加到上下文里去--> 8 <context-param> 9 <param-name>contextConfigLocation</param-name>10 <param-value>classpath:applicationContext.xml</param-value>11 </context-param>12 <listener>13 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>14 </listener>15 <!--spring 前端控制器-->16 <servlet>17 <servlet-name>SpringMVC</servlet-name>18 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>19 <init-param>20 <param-name>contextConfigLocation</param-name>21 <param-value>classpath:springmvc-servlet.xml</param-value>22 </init-param>23 </servlet>24 <servlet-mapping>25 <servlet-name>SpringMVC</servlet-name>26 <url-pattern>/</url-pattern>27 </servlet-mapping>28 </web-app>
3、applicationContext.xml無配置內(nèi)容所以忽略
4、springmvc-servlet.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd10 http://www.springframework.org/schema/mvc11 http://www.springframework.org/schema/mvc/spring-mvc.xsd12 ">13 14 <!--從配置文件加載數(shù)據(jù)庫信息-->15 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">16 <property name="locations" value="classpath:config/jdbc.properties"/>17 <property name="fileEncoding" value="UTF-8"/>18 </bean>19 20 <!--配置數(shù)據(jù)源,這里使用Spring默認(rèn)-->21 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">22 <property name="driverClassName" value="${sqlserver.driver}"/>23 <property name="url" value="${sqlserver.url}"/>24 <property name="username" value="${sqlserver.username}"/>25 <property name="password" value="${sqlserver.password}"/>26 </bean>27 28 <!--掃描Mapper-->29 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">30 <property name="basePackage" value="com.autohome.mapper"/>31 32 </bean>33 34 <!--配置sqlSessionFactory-->35 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">36 <property name="configLocation" value="classpath:springmvc-mybatis.xml"/>37 <property name="dataSource" ref="dataSource"/>38 </bean>39 40 <!--啟用最新的注解器、映射器-->41 <mvc:annotation-driven/>42 43 <!--掃描Controller注解類-->44 <context:component-scan base-package="com.autohome.controller" />45 <!--掃描Service注解類-->46 <context:component-scan base-package="com.autohome.service"/>47 48 <!--配置視圖解析器-->49 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">50 <property name="prefix" value="/WEB-INF/views/"/>51 <property name="suffix" value=".jsp"/>52 </bean>53 54 </beans>
5、springmvc-mybatis.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 6 <!-- 實(shí)體類,簡稱 -設(shè)置別名 --> 7 <typeAliases> 8 <typeAlias alias="User" type="com.autohome.model.User" /> 9 </typeAliases>10 11 12 <mappers>13 <mapper resource="mapper/UserMapper.xml" />14 </mappers>15 16 </configuration>
6、dao接口層、mapper(dao接口實(shí)現(xiàn)層)、Biz層、 model層忽略不計(jì)(id,name,address3個(gè)測試字段)。 mapper文件讓我踩了坑,后恍然大悟,mapper.xml要放在resources包下。
1 2 3 4 5 6 7 8 9 10 | public interface UserMapper { List<User> listAllUser(); List<User> listPagedUser( @Param ( "pageIndex" ) int pageIndex, @Param ( "pageSize" ) int pageSize); int count(); int updateUser(User user); int deleteUser( int id); int insertUser(User user); User getUserById( int id); } |
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <!--命名空間和接口保持一致--> 5 <mapper namespace="com.autohome.mapper.UserMapper"> 6 <select id="listAllUser" resultType="User"> 7 select * from t_userinfo 8 </select> 9 10 <select id="listPagedUser" resultType="User">11 select top ${pageSize} * from t_userinfo where id not in (select top (${pageSize} * (${pageIndex} -1)) id from t_userinfo)12 </select>13 14 <select id="count" resultType="int">15 select count(*) from t_userinfo16 </select>17 18 <insert id="insertUser" parameterType="User">19 insert into t_userinfo VALUES (#{name},#{address})20 </insert>21 22 <update id="updateUser" parameterType="User">23 UPDATE t_userinfo set name=#{name},address=#{address} where id=#{id}24 </update>25 26 <delete id="deleteUser" parameterType="int">27 DELETE FROM t_userinfo where id=#{id}28 </delete>29 30 <select id="getUserById" resultType="User" parameterType="int">31 select * from t_userinfo where id=#{id}32 </select>33 34 </mapper>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package com.autohome.service; import com.autohome.model.User; import com.autohome.mapper.UserMapper; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; @Service public class UserBizImpl implements IUserBiz { @Autowired private UserMapper userMapper; public List<User> listAllUser() { return userMapper.listAllUser(); } public List<User> listPagedUser( @Param ( "pageIndex" ) int pageIndex, @Param ( "pageSize" ) int pageSize) { return userMapper.listPagedUser(pageIndex,pageSize); } public int count() { return userMapper.count(); } public int updateUser(User user) { return userMapper.updateUser(user); } public int deleteUser( int id) { return userMapper.deleteUser(id); } public int insertUser(User user) { return userMapper.insertUser(user); } public User getUserById( int id) { return userMapper.getUserById(id); } } |
7、Controller。 我新建了一個(gè)UserController,在這里調(diào)用了增刪改查分頁的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | package com.autohome.controller; import com.autohome.service.IUserBiz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.autohome.model.User; @Controller @RequestMapping ( "/User" ) public class UserController { @Autowired private IUserBiz userBiz; @RequestMapping ( "/index" ) public ModelAndView index(){ //System.out.println("size:"+userBiz.listAllUser().size()); System.out.println( "size:" +userBiz.count()); // // User user =new User(); // user.setName("張三"); // user.setAddress("shanxi"); // // int result = userBiz.insertUser(user); // if(result>0) // { // System.out.println("insert success"); // }else{ // System.out.println("insert err"); // } int result = userBiz.deleteUser( 39 ); if (result> 0 ) { System.out.println( "delete success" ); } else { System.out.println( "delete err" ); } // User user =new User(); // user.setId(35); // user.setName("張三11111"); // user.setAddress("china"); // // int result = userBiz.updateUser(user); // if(result>0) // { // System.out.println("update success"); // }else{ // System.out.println("update err"); // } //System.out.println("size:"+userBiz.listPagedUser(1,10).size()); ModelAndView mav= new ModelAndView( "index" ); return mav; } } |