SSM框架整合(IntellIj IDEA+Maven+Spring+SpringMVC+MyBatis)之MyBatis
2017-07-06 16:33
916 查看
我认为框架整合不熟练的话按照MyBatis->SpringMVC->Spring顺序整合比较好,先配置MyBatis是因为不需要额外的配置服务器,进行单元测试比较容易。Spring是用来进行整合的,所以等其它框架配置好之后进行整合不会显得很乱。
1. IntelliJ IDEA搭建Maven项目
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/d8b40554275dab87a8b49d99ea27d72e)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/e22488ef5a612c6e64fd7d890626875e)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/dd0a5a6ef9facd1b91a8bee09e1f1724)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/947fe9178a8542b8f924212e92ab121b)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/c7b93c6cc4da35eb13d602782d8f559a)
新建完项目之后就是下面这样一个空项目
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/d0a48c2bff92f686954bd39559e5e0ac)
按规范搭建一个项目结构,src下面分为main和test,main放正式代码和正式资源配置文件,test下放测试代码和测试资源文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/12c61c575ba9f732297a972be11c3f3f)
然后右键给项目设置属性,main下面的java设置为sources root,resources设置为resources root;test下面的java设置为test resources root,resources设置为test resources root,idea打包是分类打包的,比如说java文件里是方代码的就不能方配置文件,不然打包的时候配置文件没有包含进去,同样的测试文件里不能放正式代码。
要先设置好各个文件的属性才能建包,没设置好属性右键就没有package这个选项,如果点击了directory建立的是目录,名字为com.xxx.xxx的目录,不是层叠的包,必须在sources root状态下才有建包的选项。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/c8969a63895890d4e9097dd171c4dad0)
2. 配置MyBatis
2.1. 导包
配置pom.xml的时候注意包的使用范围,也就是scope属性。有一次做项目报错就是因为这个。当时项目要做一个邮件验证功能,我就用javaEE自带的邮件包来做,测试的时候好好的能发送,但是发布到服务器上的时候就不能发送。检查了好久才发现是javaee-api设置的范围是provided,也就是不打包发布到服务器上,我就把provided给删了,默认为compile打包到服务器,然后发现连启动服务器都报错了。经过仔细排查发现是javaee-api自带的servlet包和tomcat自带的servlet包冲突了,所以我又把javaee-api的范围给改回provided,邮件要用的包再单独添加,这下才彻底解决了。
2.2. jdbc.properties配置文件
2.3编写MyBatis配置文件SqlMapConfig.xml
2.4 使用Maven插件自动生成domain类、Mapper接口和Mapper.xml文件
2.4.1在pom.xml文件中引入插件
2.4.2 编写generatorConfig.xml配置文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/bf38541c69ec326c1c2a8b1329c732ad)
2.4.3 运行插件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/9d038f577c7eea44efb83bf2db542fc2)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/1dd44ecc6e83ea304e780bc30f8ccebc)
2.4.4 运行结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/10/0221a8d82ea884b481405a8225b357a2)
3. 单元测试运行结果:
1. IntelliJ IDEA搭建Maven项目
新建完项目之后就是下面这样一个空项目
按规范搭建一个项目结构,src下面分为main和test,main放正式代码和正式资源配置文件,test下放测试代码和测试资源文件
然后右键给项目设置属性,main下面的java设置为sources root,resources设置为resources root;test下面的java设置为test resources root,resources设置为test resources root,idea打包是分类打包的,比如说java文件里是方代码的就不能方配置文件,不然打包的时候配置文件没有包含进去,同样的测试文件里不能放正式代码。
要先设置好各个文件的属性才能建包,没设置好属性右键就没有package这个选项,如果点击了directory建立的是目录,名字为com.xxx.xxx的目录,不是层叠的包,必须在sources root状态下才有建包的选项。
2. 配置MyBatis
2.1. 导包
配置pom.xml的时候注意包的使用范围,也就是scope属性。有一次做项目报错就是因为这个。当时项目要做一个邮件验证功能,我就用javaEE自带的邮件包来做,测试的时候好好的能发送,但是发布到服务器上的时候就不能发送。检查了好久才发现是javaee-api设置的范围是provided,也就是不打包发布到服务器上,我就把provided给删了,默认为compile打包到服务器,然后发现连启动服务器都报错了。经过仔细排查发现是javaee-api自带的servlet包和tomcat自带的servlet包冲突了,所以我又把javaee-api的范围给改回provided,邮件要用的包再单独添加,这下才彻底解决了。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.overridere.web</groupId> <artifactId>blogmanage</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>blogmanage Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jav 4000 ax.servlet.jsp.jstl</artifactId> <version>1.2.2</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-infrastructure</artifactId> <version>3.0.7.RELEASE</version> </dependency> <!-- dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!-- 添加mybatis支持 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <!-- jdbc驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.8</version> </dependency> <!-- 添加日志支持 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency&g 10917 t; <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.18.1-GA</version> </dependency> <!-- json对应MappingJackson2HttpMessageConverter,2.x版本以上 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>blogmanage</finalName> </build> </project>
2.2. jdbc.properties配置文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/blog username=root password=ying1995520***
2.3编写MyBatis配置文件SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载数据库连接参数配置文件 --> <properties resource="jdbc.properties" /> <!-- 全局配置参数 --> <settings> <!-- 开启延迟加载 --> <setting name="lazyLoadingEnabled" value="true" /> <setting name="aggressiveLazyLoading" value="false" /> <!-- 打开二级缓存 --> <setting name="cacheEnabled" value="true" /> </settings> <typeAliases> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <package name="com.jyh.mapper"/> </mappers> </configuration>
2.4 使用Maven插件自动生成domain类、Mapper接口和Mapper.xml文件
2.4.1在pom.xml文件中引入插件
<build> <finalName>blogmanage</finalName> <!-- mybatis自动生成代码插件 --> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build>
2.4.2 编写generatorConfig.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 配置mysql 驱动jar包路径.用了绝对路径 --> <classPathEntry location="E:/JAVA/maven/mavenRepository/mysql/mysql-connector-java/5.1.8/mysql-connector-java-5.1.8.jar" /> <context id="wangyongzhi_mysql_tables" targetRuntime="MyBatis3"> <!-- 防止生成的代码中有很多注释,加入下面的配置控制 --> <commentGenerator> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> </commentGenerator> <!-- 数据库连接 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/blog" userId="root" password="ying1995520***"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类 targetPackage 指定生成的model生成所在的包名 targetProject 指定在该项目下所在的路径 --> <javaModelGenerator targetPackage="com.jyh.domain" targetProject="src/main/java"> <!-- 是否对model添加 构造函数 --> <property name="constructorBased" value="true"/> <!-- 是否允许子包,即targetPackage.schemaName.tableName --> <property name="enableSubPackages" value="true" /> <!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 <property name="immutable" value="true"/> --> <!-- 是否对类CHAR类型的列的数据进行trim操作 --> <property name="trimStrings" value="true" /> <!-- 给Model添加一个父类 <property name="rootClass" value="com.foo.louis.Hello"/> --> </javaModelGenerator> <!-- sql mapper 映射配置文件 --> <sqlMapGenerator targetPackage="com.jyh.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码 type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象 type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象 type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.jyh.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <!-- 定义Maper.java 源代码中的ByExample() 方法的可视性,可选的值有: public; private; protected; default 注意:如果 targetRuntime="MyBatis3",此参数被忽略\ <property name="exampleMethodVisibility" value=""/> --> <!-- 方法名计数器 Important note: this property is ignored if the target runtime is MyBatis3. <property name="methodNameCalculator" value=""/> --> <!-- 为生成的接口添加父接口 <property name="rootInterface" value=""/>--> </javaClientGenerator> <!-- 数据表进行生成操作 schema:相当于库名; tableName:表名; domainObjectName:对应的DO --> <table schema="blog" tableName="article" domainObjectName="Article" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> <table schema="blog" tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> <table schema="blog" tableName="comment" domainObjectName="Comment" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>
2.4.3 运行插件
2.4.4 运行结果:
3. 单元测试运行结果:
相关文章推荐
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合 4000 (IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntellIj IDEA+Maven+Spring+SpringMVC+MyBatis)之Spring Framework
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)
- IntelliJ IDEA 搭建基于Maven 的SSM(一)(spring,springMvc,Mybatis)框架整合
- IDEA-Maven整合SSM框架,超详细教程(Spring+SpringMVC+Mybatis)
- SSM框架整合(Spring + SpringMVC + Mybatis + Maven + IDEA)
- Eclipse Maven建web项目 与SSM三大框架整合教程(Spring+SpringMVC+MyBatis)
- Intellij-IDEA-maven+springMVC+mybatis整合
- SSM框架使用Maven构建环境详细整合教程(Spring+SpringMVC+MyBatis)
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis+Maven)
- 使用maven,实现ssm(spring+springmvc+mybatis)三大框架的整合DEMO
- [置顶] SSM框架——详细整合教程(Spring+SpringMVC+MyBatisPlus+Maven)
- Intellij-IDEA-maven+springMVC+mybatis整合DEMO