SSM003/构建Maven单模块项目(一)
一。环境准备
1。开发工具:IDEA
2。JDK版本:jdk1.8
3。Maven版本:apache-maven-3.2.5
4。数据库mysql.
二。基于Maven构建web项目
Step1:File->new module
Step2:Next->输入坐标值(GroupId/ArtifactId/version)
Step3:配置maven及maven所在仓库
Step4:指定模块名及所在文件目录
OK。
基于Maven搭建单模块web项目框架已完成!
三。完整包结构
最终项目结构如下图所示:
注意点:
Dao的Mapper.xml文件存储位置放到resources目录下面。放置到java目录下面,会一直报Mybatis绑定错误。
四。配置文件
1。依赖配置(pom.xml)

1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.yufeng.web</groupId> 8 <artifactId>web-ssm-single</artifactId> 9 <packaging>war</packaging> 10 11 <name>web-ssm-single Maven Webapp</name> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 <jdk.version>1.8</jdk.version> 16 <spring.version>4.2.5.RELEASE</spring.version> 17 <mysql.version>5.1.6</mysql.version> 18 <c3p0.version>0.9.1.2</c3p0.version> 19 </properties> 20 21 <dependencies> 22 <!-- 1.数据库相关依赖--> 23 <!-- 1.1).mysql--> 24 <dependency> 25 <groupId>mysql</groupId> 26 <artifactId>mysql-connector-java</artifactId> 27 <version>${mysql.version}</version> 28 </dependency> 29 <!-- 1.2).c3p0数据连接池--> 30 <dependency> 31 <groupId>c3p0</groupId> 32 <artifactId>c3p0</artifactId> 33 <version>${c3p0.version}</version> 34 </dependency> 35 36 <!-- 2.dao框架:MyBatis依赖--> 37 <dependency> 38 <groupId>org.mybatis</groupId> 39 <artifactId>mybatis</artifactId> 40 <version>3.2.4</version> 41 </dependency> 42 <!--mybatis自身实现的spring整合依赖--> 43 <dependency> 44 <groupId>org.mybatis</groupId> 45 <artifactId>mybatis-spring</artifactId> 46 <version>1.2.2</version> 47 </dependency> 48 49 <!-- 3.Servlet web相关依赖--> 50 <dependency> 51 <groupId>taglibs</groupId> 52 <artifactId>standard</artifactId> 53 <version>1.1.2</version> 54 </dependency> 55 <dependency> 56 <groupId>javax.servlet</groupId> 57 <artifactId>jstl</artifactId> 58 <version>1.2</version> 59 <type>jar</type> 60 </dependency> 61 <dependency> 62 <groupId>com.fasterxml.jackson.core</groupId> 63 <artifactId>jackson-databind</artifactId> 64 <version>2.9.3</version> 65 </dependency> 66 <dependency> 67 <groupId>javax.servlet</groupId> 68 <artifactId>servlet-api</artifactId> 69 <version>2.5</version> 70 <scope>provided</scope> 71 </dependency> 72 73 <!--4.Spring依赖 --> 74 <!--4.1)Spring核心依赖 --> 75 <dependency> 76 <groupId>org.springframework</groupId> 77 <artifactId>spring-core</artifactId> 78 <version>${spring.version}</version> 79 </dependency> 80 <dependency> 81 <groupId>org.springframework</groupId> 82 <artifactId>spring-beans</artifactId> 83 <version>${spring.version}</version> 84 </dependency> 85 <dependency> 86 <groupId>org.springframework</groupId> 87 <artifactId>spring-context</artifactId> 88 <version>${spring.version}</version> 89 </dependency> 90 <!--4.2)spring dao层依赖--> 91 <dependency> 92 <groupId>org.springframework</groupId> 93 <artifactId>spring-jdbc</artifactId> 94 <version>${spring.version}</version> 95 </dependency> 96 <dependency> 97 <groupId>org.springframework</groupId> 98 <artifactId>spring-tx</artifactId> 99 <version>${spring.version}</version> 100 </dependency> 101 <!--4.3)springweb相关依赖--> 102 <dependency> 103 <groupId>org.springframework</groupId> 104 <artifactId>spring-web</artifactId> 105 <version>${spring.version}</version> 106 </dependency> 107 <dependency> 108 <groupId>org.springframework</groupId> 109 <artifactId>spring-webmvc</artifactId> 110 <version>${spring.version}</version> 111 </dependency> 112 <!--4.4)spring test相关依赖 不加则@RunWith(SpringJUnit4ClassRunner.class)不能应用--> 113 <dependency> 114 <groupId>org.springframework</groupId> 115 <artifactId>spring-test</artifactId> 116 <version>${spring.version}</version> 117 </dependency> 118 119 <!--3.0的junit是使用编程的方式来进行测试,而junit4是使用注解的方式来运行junit --> 120 <dependency> 121 <groupId>junit</groupId> 122 <artifactId>junit</artifactId> 123 <version>4.9</version> 124 <scope>test</scope> 125 </dependency> 126 127 <!--log依赖 --> 128 <!-- 129 1.日志 java日志有:slf4j,log4j,logback,common-logging 130 slf4j:是规范/接口 131 日志实现:log4j,logback,common-logging 132 使用:slf4j+logback 133 --> 134 <dependency> 135 <groupId>org.slf4j</groupId> 136 <artifactId>slf4j-api</artifactId> 137 <version>1.7.5</version> 138 </dependency> 139 </dependencies> 140 141 <build> 142 <finalName>web-ssm-single</finalName> 143 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> 144 <plugins> 145 <plugin> 146 <groupId>org.apache.maven.plugins</groupId> 147 <artifactId>maven-compiler-plugin</artifactId> 148 <version>2.3.2</version> 149 <configuration> 150 <source>${jdk.version}</source> 151 <target>${jdk.version}</target> 152 <encoding>${project.build.sourceEncoding}</encoding> 153 </configuration> 154 </plugin> 155 <plugin> 156 <groupId>org.apache.maven.plugins</groupId> 157 <artifactId>maven-resources-plugin</artifactId> 158 <version>2.5</version> 159 </plugin> 160 </plugins> 161 </pluginManagement> 162 </build> 163 </project>
2。jdbc属性配置(jdbc.properties)

1 #数据库连接配置信息 2 jdbc.driver=com.mysql.jdbc.Driver 3 jdbc.url=jdbc:mysql://127.0.0.1:3306/learn 4 jdbc.username=root 5 jdbc.userpwd=root
3。mybatis配置(mybatis-config.xml)

1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!-- mybatis全局配置文件--> 7 <!-- 配置全局属性--> 8 <settings> 9 <!-- 使用jdbc的getGeneratekeys获取自增主键值--> 10 <setting name="useGeneratedKeys" value="true"/> 11 <!--使用列别名替换列名,默认值为true 12 select name as title(实体中的属性名为title) from table 13 开启后,mybatis会自动帮我们把表中的值赋到对应实体的title上。 14 --> 15 <setting name="useColumnLabel" value="true" /> 16 <!-- 开启驼峰命名转换Table:create_time到Entity:createTime--> 17 <setting name="mapUnderscoreToCamelCase" value="false" /> 18 </settings> 19 </configuration>
4。Spring & Mybatis整合配置(spring-dao.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:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation=" 6 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.xsd"> 10 11 <!--Spring整合mybatis文件相关配置 --> 12 13 <!-- Step1:配置数据库相关参数(引入属性文件)--> 14 <context:property-placeholder location="classpath:/properties/jdbc.properties" /> 15 16 <!--Step2:配置数据库连接池 --> 17 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > 18 <!--配置连接池属性 --> 19 <property name="driverClass" value="${jdbc.driver}" /> 20 21 <!-- 基本属性:连接url/username/password--> 22 <property name="jdbcUrl" value="${jdbc.url}" /> 23 <property name="user" value="${jdbc.username}" /> 24 <property name="password" value="${jdbc.userpwd}" /> 25 26 <!-- c3p0私有属性--> 27 <property name="maxPoolSize" value="30" /> 28 <property name="minPoolSize" value="10" /> 29 <!-- 关闭连接后不自动提交--> 30 <property name="autoCommitOnClose" value="false" /> 31 <!-- 获取连接超时时间--> 32 <property name="checkoutTimeout" value="10000" /> 33 <!-- 当获取连接失败重试次数--> 34 <property name="acquireRetryAttempts" value="2" /> 35 </bean> 36 37 <!--约定大于配置 --> 38 <!-- Step3: 配置sqlSessionFactory对象--> 39 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" > 40 <!-- mybatis & Spring整合真正配置(以下)--> 41 <!--注入数据库连接池 --> 42 <property name="dataSource" ref="dataSource" /> 43 <!-- 配置mybatis全局配置文件:mybatis-config.xml--> 44 <property name="configLocation" value="classpath:/config/mybatis-config.xml" /> 45 <!-- 扫描entity包,使用别名,多个用;隔开--> 46 <property name="typeAliasesPackage" value="com.csvalue.model" /> 47 <!-- 扫描sql配置文件:mapper需要的xml文件--> 48 <property name="mapperLocations" value="classpath:/mapper/*Mapper.xml" /> 49 </bean> 50 51 <!--Step4:配置扫描dao接口包,动态实现Dao接口,注入到spring容器 --> 52 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" > 53 <!--注入SqlSessionFactory --> 54 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 55 <!-- 给出需要扫描的dao接口--> 56 <property name="basePackage" value="com.csvalue.dao" /> 57 </bean> 58 </beans>
5。Springmvc配置(spring-mvc.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:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context.xsd 11 http://www.springframework.org/schema/mvc 12 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 13 14 <!--配置springmvc --> 15 <!-- Step1:开启springmvc注解模式 16 【1】。自动注册:DefaultAnnotaionHandlerMapping,AnnotationMethodHandlerAdaptor 17 【2】。默认提供一系列的功能,数据绑定,数字和日期的format@NumberFormat,@DateTimeFormat 18 【3】。xml,json的默认读写支持 19 --> 20 <mvc:annotation-driven /> 21 22 <!-- Step2:静态资源默认servlet配置 --> 23 <!-- 24 【1】。加入对静态资源处理:js/gif/png... 25 【2】。允许使用"/"做整体映射 26 --> 27 <mvc:default-servlet-handler /> 28 29 <!--Step3:配置jsp,显示ViewResolver --> 30 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 31 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 32 <property name="prefix" value="/WEB-INF/view/"/> 33 <property name="suffix" value=".jsp" /> 34 </bean> 35 36 <!-- Step4:扫描web相关的bean--> 37 <context:component-scan base-package="com.csvalue.controller" /> 38 39 </beans>
6。Spring事务管理(spring-service.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:context="http://www.springframework.org/schema/context" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:aop="http://www.springframework.org/schema/aop" 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context.xsd 12 http://www.springframework.org/schema/tx 13 http://www.springframework.org/schema/tx/spring-tx.xsd 14 http://www.springframework.org/schema/aop 15 http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> 16 17 <!--Spring事务配置文件 --> 18 19 <!-- 扫描service包下的所有使用注解的类型--> 20 <context:component-scan base-package="com.csvalue.service" /> 21 22 <!-- 配置事务管理器(真正管理事务)--> 23 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > 24 <!-- 注入数据库连接池--> 25 <property name="dataSource" ref="dataSource" /> 26 </bean> 27 28 <!-- 配置基于注解的声明式事务。默认使用注解来管理事务行为--> 29 <!--<tx:annotation-driven transaction-manager="transactionManager" />--> 30 31 <!--为事务transactionManager增强 --> 32 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 33 <tx:attributes> 34 <!-- 写操作--> 35 <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception"/> 36 <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception"/> 37 <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception"/> 38 <!-- 读操作--> 39 <tx:method name="find*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/> 40 <tx:method name="get*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/> 41 <tx:method name="query*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/> 42 </tx:attributes> 43 </tx:advice> 44 45 <!-- 定义AOP切面管理器,指定事务作用到哪。--> 46 <aop:config> 47 <!-- 定义切面在所有service包下--> 48 <aop:pointcut id="txPointcut" expression="execution(* com.csvalue.service..*.*(..))"/> 49 <!-- 把事务控制在service层--> 50 <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" /> 51 </aop:config> 52 </beans>
7。Spring总配置文件整合spring相关配置(applicationContext.xml)(不指定)
注:也可以不使用该文件,指定spring配置时,直接指定:classpath:/config/spring-*.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 xsi:schemaLocation=" 5 http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans.xsd"> 7 8 <import resource="classpath:/config/spring-dao.xml" /> 9 <import resource="classpath:/config/spring-service.xml" /> 10 <import resource="classpath:/config/spring-mvc.xml" /> 11 </beans>
8。web配置(web.xml)

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5 version="2.5"> 6 7 <!-- DispatcherServlet,Spring MVC的核心 8 配置springmvc需要配置文件 9 spring-dao.xml , spring-service.xml,spring-mvc.xml 10 mybatis -> spring -> springmvc 11 --> 12 <servlet> 13 <servlet-name>mvc-dispatcher</servlet-name> 14 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 15 <init-param> 16 <param-name>contextConfigLocation</param-name> 17 <param-value>classpath:/config/spring-*.xml</param-value> 18 </init-param> 19 <load-on-startup>1</load-on-startup> 20 </servlet> 21 <servlet-mapping> 22 <servlet-name>mvc-dispatcher</servlet-name> 23 <!--MVC拦截所有请求 --> 24 <url-pattern>/</url-pattern> 25 </servlet-mapping> 26 </web-app>
五。示例代码
1。User.java(模型类)

1 package com.csvalue.model; 2 3 public class User { 4 private Long userId; 5 private String userName; 6 private String userPwd; 7 private Long age; 8 private String email; 9 10 public Long getUserId() { 11 return userId; 12 } 13 14 public void setUserId(Long userId) { 15 this.userId = userId; 16 } 17 18 public String getUserName() { 19 return userName; 20 } 21 22 public void setUserName(String userName) { 23 this.userName = userName; 24 } 25 26 public String getUserPwd() { 27 return userPwd; 28 } 29 30 public void setUserPwd(String userPwd) { 31 this.userPwd = userPwd; 32 } 33 34 public Long getAge() { 35 return age; 36 } 37 38 public void setAge(Long age) { 39 this.age = age; 40 } 41 42 public String getEmail() { 43 return email; 44 } 45 46 public void setEmail(String email) { 47 this.email = email; 48 } 49 50 @Override 51 public String toString() { 52 return "User{" + 53 "userId=" + userId + 54 ", userName='" + userName + '\'' + 55 ", userPwd='" + userPwd + '\'' + 56 ", age=" + age + 57 ", email='" + email + '\'' + 58 '}'; 59 } 60 }
2。UserDao.java(Dao层接口)

1 package com.csvalue.dao; 2 3 import com.csvalue.model.User; 4 import org.springframework.stereotype.Repository; 5 6 import java.util.List; 7 8 @Repository 9 public interface UserMapper { 10 11 public List<User> queryUserList(); 12 }
3。UserMapper.xml(Dao层mapper映射)

1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.csvalue.dao.UserMapper"> 4 5 <resultMap id="userResultMap" type="com.csvalue.model.User"> 6 <id column="user_id" jdbcType="BIGINT" property="userId" /> 7 <result column="user_name" jdbcType="VARCHAR" property="userName" /> 8 <result column="user_pwd" jdbcType="VARCHAR" property="userPwd" /> 9 <result column="age" jdbcType="BIGINT" property="age" /> 10 <result column="email" jdbcType="VARCHAR" property="email" /> 11 </resultMap> 12 13 <select id="queryUserList" resultMap="userResultMap"> 14 select user_id,user_name,user_pwd,age,email from com_user 15 </select> 16 17 <select id="queryUserList1" resultType="com.csvalue.model.User"> 18 select user_id,user_name,user_pwd,age,email from com_user 19 </select> 20 </mapper>
4。IUserService.java(service接口)

1 package com.csvalue.service; 2 3 import com.csvalue.model.User; 4 5 import java.util.List; 6 7 public interface IUserService { 8 List<User> queryUserList(); 9 }
5。UserService.java(service实现类)

1 package com.csvalue.service.impl; 2 3 import com.csvalue.dao.UserMapper; 4 import com.csvalue.model.User; 5 import com.csvalue.service.IUserService; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.stereotype.Service; 8 9 import java.util.List; 10 11 @Service 12 public class UserServiceImpl implements IUserService { 13 14 @Autowired 15 private UserMapper userMapper; 16 17 @Override 18 public List<User> queryUserList() { 19 return userMapper.queryUserList(); 20 } 21 }
6。UserController.java(Controller类)

1 package com.csvalue.controller; 2 3 import com.csvalue.model.User; 4 import com.csvalue.service.IUserService; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.RequestMethod; 9 import org.springframework.web.bind.annotation.ResponseBody; 10 11 import java.util.List; 12 13 @Controller 14 @RequestMapping("/user") 15 public class UserController { 16 @Autowired 17 private IUserService iUserService; 18 19 @ResponseBody 20 @RequestMapping(value = "/query",method = {RequestMethod.GET,RequestMethod.POST}) 21 public String queryUserList(){ 22 List<User> userList=iUserService.queryUserList(); 23 for (User user:userList){ 24 System.out.println("out=>"+user.toString()); 25 } 26 return "hello springmvc"; 27 } 28 }
部署tomcat
在web.xml中添加欢迎页index.jsp,不添加默认也为index.jsp(不指定)

1 <welcome-file-list> 2 <welcome-file>index.jsp</welcome-file> 3 </welcome-file-list>
index.jsp文件内容

1 <html> 2 <body> 3 <h2>Hello World!</h2> 4 <h3><a href="/user/query">send request</a></h3> 5 </body> 6 </html>
浏览器启动,效果如下:
点击“send reques”链接-》
7。IUserServiceTest(测试类)
创建测试类:在所需要测试的service接口上,按住ctrl+shift+t键。mac是command+shift+t键
创建新的测试类即可。

1 package com.csvalue.service; 2 3 import com.csvalue.model.User; 4 import org.junit.Test; 5 import org.junit.runner.RunWith; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.test.context.ContextConfiguration; 8 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 9 10 import java.util.List; 11 12 import static org.junit.Assert.*; 13 14 @RunWith(SpringJUnit4ClassRunner.class) 15 @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) 16 public class IUserServiceTest { 17 18 @Autowired 19 IUserService iUserService; 20 21 /** 22 * 测试查询用户列表:开启/关闭mybatis驼峰命名 23 * */ 24 @Test 25 public void queryUserList() { 26 List<User> userList=iUserService.queryUserList(); 27 for(User user:userList){ 28 System.out.println("out=>"+user.toString()); 29 } 30 } 31 }
六。常见问题汇总
1。注意:*Mapper.xml文件包位置
由于*Mapper.xml文件放置到java/目录下面。所以导致mybatis绑定错误。
2。MyBatis绑定错误:Invalid bound statement (not found)
可参考博客:https://my.oschina.net/wangdaoliang/blog/652266
上述发现target中mapper包/*mapper.xml未加载进来。IDEA默认加载resources包下的资源文件。
所以。修改mapper包位置(由java目录下转移到resources目录下面)即可。
总结:
【1】、检查xml文件所在的package名称是否和interface对应的package名称一一对应
【2】、检查xml文件的namespace是否和xml文件的package名称一一对应
【3】、检查函数名称能否对应上
【4】、去掉xml文件中的中文注释
【5】、随意在xml文件中加一个空格或者空行然后保存
【6】、mapper.xml文件是否有用错误的标签
3。org.apache.ibatis.type.TypeException: Could not resolve type alias 'BIGINT'
问题原因:UserMapper.xml文件错误,类型为jdbcType而不是javaType。
4。编译生成的target文件内容不全,如没有配置文件等。
解决方案:可先删除target,重新用maven编译,可右击项目-》Rebuild Module...即可。
5。注意spring-service.xml事务文件,加该段代码有时候会报错。可以先去掉该事务配置。

1 <!--为事务transactionManager增强 --> 2 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 3 <tx:attributes> 4 <!-- 写操作--> 5 <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception"/> 6 <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception"/> 7 <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception"/> 8 <!-- 读操作--> 9 <tx:method name="find*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/> 10 <tx:method name="get*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/> 11 <tx:method name="query*" propagation="SUPPORTS" isolation="DEFAULT" read-only="true"/> 12 </tx:attributes> 13 </tx:advice> 14 15 <!-- 定义AOP切面管理器,指定事务作用到哪。--> 16 <aop:config> 17 <!-- 定义切面在所有service包下--> 18 <aop:pointcut id="txPointcut" expression="execution(* com.csvalue.service..*.*(..))"/> 19 <!-- 把事务控制在service层--> 20 <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" /> 21 </aop:config>
6。启动项目时,浏览器访问会找不到Controller.注意几点:
【1】配置文件所配置的controller包路径是否正确(spring-mvc.xml)
【2】controller类上是否包含@Controller注解。(注解是否加上)
【3】路径名是否写正确。(@RequestMapping指定的路径及指定的method是get/post)
7。将项目添加到github,以方便后续查看。
step1: 登录gitHub(https://github.com/),账号/密码;yufeng_2016@sina.com/a+0
step2: myworkspace目录下初始化git ($ git init)
step3: 提交文件到暂存区 ($ git add * | $ git commit -m "springmvc")
step4: 本地仓库与远程仓库建立连接(git remote add origin https://github.com/shi***)
step5:向远程仓库推送代码($ git push origin master)
此时报错。
解决方案,输入命令:
https://stackoverflow.com/questions/18328800/github-updates-were-rejected-because-the-remote-contains-work-that-you-do-not-h
git pull origin master --allow-unrelated-histories
此时会进入编辑界面,输入:q!退出即可。效果如下所示:
再执行step5,向远程仓库推送代码。($ git push origin master)
8。打war包。部署。制作docker镜像。
-》构建war包
本文代码地址:https://github.com/shiyufeng0919/kaixinyufeng/tree/master/idea/ssm-web
本文参考博客:https://blog.csdn.net/cjq2013/article/details/76166173