使用Maven构建多模块,SpringBoot整合Mybatis、PageHelper

一、多模块项目结构。

springboot-mybatis-parent
|——springboot-common    公共模块
|——springboot-dao            数据库操作模块
|——springboot-service       接口模块
|——springboot-web           控制器模块

依赖关系:springboot-service依赖springboot-dao、springboot-web依赖springboot-service。

二、父级pom.xml使用的主要依赖。


<modules>
    <module>springboot-commonmodule>
    <module>springboot-daomodule>
    <module>springboot-servicemodule>
    <module>springboot-webmodule>
modules>


<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>1.5.7.RELEASEversion>
    <relativePath />
parent>


<properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
    <java.version>1.8java.version>
    
    <skipTests>trueskipTests>
    <pagehelper.version>1.2.3pagehelper.version>
    <druid.version>1.0.29druid.version>
    <fastjson.version>1.2.31fastjson.version>
    <lombok.version>1.16.20lombok.version>
    <servlet.version>3.1.0servlet.version>
    <slf4j.version>1.7.25slf4j.version>
properties>


<dependencyManagement>
    <dependencies>
        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelper-spring-boot-starterartifactId>
            <version>${pagehelper.version}version>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>${druid.version}version>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>${fastjson.version}version>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>${lombok.version}version>
            <scope>providedscope>
        dependency>

        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>${servlet.version}version>
            <scope>providedscope>
        dependency>
        
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>${slf4j.version}version>
        dependency>
    dependencies>
dependencyManagement>

<build>
    <finalName>${project.artifactId}finalName>
build>

三、mybatis配置文件使用注意事项。

1.在application.yml
# mybatis配置
mybatis:
  ## 设置整个包下类的别名
  # typeAliasesPackage: com.hkb.springboot.dto, com.hkb.springboot.entity
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapper-locations: classpath:mybatis/mapper/*.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml
# 开启驼峰功能这里不开启,这里因为使用xml,所以在mybatis-config.xml中使用
#  configuration:
#    mapUnderscoreToCamelCase: true
# pagehelper分页助手-另一种方式在代码里配置 
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql
上面的配置等同于下面的配置,注意:因为这里是springboot整合pagehelper,分页配置不能在mybatis-config.xml里设置。
# mybatis配置
mybatis:
  ## 设置整个包下类的别名
  # type-aliases-package: com.hkb.springboot.dto, com.hkb.springboot.entity
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath:mybatis/mapper/*.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml
# 开启驼峰功能这里不开启,这里因为使用xml,所以在mybatis-config.xml中使用
#  configuration:
#    mapUnderscoreToCamelCase: true
# pagehelper分页助手-另一种方式在代码里配置 
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql
2.设置整个包下类的别名也可以在mybatis-config.xml里配置


<configuration>
    <settings>
        
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        
        <setting name="useGeneratedKeys" value="true"/>
    settings>
    
    <typeAliases>
        <package name="com.hkb.springboot.dto"/>
        <package name="com.hkb.springboot.entity"/>
    typeAliases>
configuration>

四、设置返回json日志格式化。

1.第一种,使用springboot默认的jackson返回,application.yml中
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
2.第二种,使用alibaba的fastjson返回,代码中
@Configuration
public class JsonConfig extends WebMvcConfigurerAdapter {

    /**
     * 修改自定义消息转换器
     * 
     * @param converters
     *            消息转换器列表
     */
    @Override
    public void configureMessageConverters(List> converters) {
        // 调用父类的配置
        super.configureMessageConverters(converters);
        // 创建fastjson消息转换器
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        // 创建配置类
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        // 修改配置返回内容的过滤
        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue,
                SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteDateUseDateFormat);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        // 将fastjson添加到视图消息转换器列表内
        converters.add(fastConverter);
    }
}
SerializerFeature.WriteDateUseDateFormat即为返回日期格式为:yyyy-MM-dd HH:mm:ss
3.有了上面的配置还不行,因为我使用mysql并且设置了日期字段类型为datetime,需要在mapper.xml中设置resultMap映射为TIMESTAMP
<resultMap id="BaseResultMap" type="SysUserEntity">
    <id column="user_id" property="userId" jdbcType="BIGINT"/>
    <result column="dept_id" property="deptId" jdbcType="BIGINT"/>
    <result column="username" property="username" jdbcType="VARCHAR"/>
    <result column="password" property="password" jdbcType="VARCHAR"/>
    <result column="salt" property="salt" jdbcType="VARCHAR"/>
    <result column="mobile" property="mobile" jdbcType="VARCHAR"/>
    <result column="email" property="email" jdbcType="VARCHAR"/>
    <result column="status" property="status" jdbcType="INTEGER"/>
    
    <result column="create_date" property="createDate" jdbcType="TIMESTAMP"/>
resultMap>

五、多模块打包、运行。

1.打包成war形式,启动类中继承SpringBootServletInitializer,重写configure方法
public class StartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(StartApplication.class);
    }

    /**
     * 启动入口
     * 
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(StartApplication.class, args);
    }
}

2.springboot-web模块的pom.xml中

<dependencies>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-tomcatartifactId>
        <scope>providedscope>
    dependency>
dependencies>
<build>
    <finalName>${project.artifactId}finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
            <configuration>
                
                <fork>truefork>
                
                <mainClass>com.hkb.springboot.StartApplicationmainClass>
            configuration>
            <executions>
                <execution>
                    <goals>
                        
                        <goal>repackagegoal>
                    goals>
                execution>
            executions>
        plugin>
        
        <plugin>
            <artifactId>maven-war-pluginartifactId>
        plugin>
    plugins>
build>
3.cd到父级项目springboot-mybatis-parent下,并使用命令mvn clean package执行

使用Maven构建多模块,SpringBoot整合Mybatis、PageHelper_第1张图片

4.再来到springboot-web/target项目目录下,可见war包

使用Maven构建多模块,SpringBoot整合Mybatis、PageHelper_第2张图片

5.运行项目,把生成的springboot-web.war包复制到tomcat/webapps下,然后在tomcat/bin下点击startup.bat运行即可。这里演示使用mvn spring-boot:run命令,来到springboot-web目录下

使用Maven构建多模块,SpringBoot整合Mybatis、PageHelper_第3张图片

注意:在springboot-web目录下运行mvn spring-boot:run命令之前,确保项目已打包好,否则此命令运行报错。完整项目请参考:码云

你可能感兴趣的:(spring相关)