Idea Spring Boot 集成 mybatis

1. 新建一个Spring Boot项目

File -> New -> Project -> Spring Initializr
Idea Spring Boot 集成 mybatis
填写好Group、Artifact和对应的java版本。
Idea Spring Boot 集成 mybatis
添加好项目要依赖的包
Idea Spring Boot 集成 mybatis
项目结构:

  • {project name}
    • out
    • src
      • main
        • java
          • com.renhao.springmybatis.demo
            • controller
              • TestBootController
            • entity
              • event.java
            • implementation
              • EventServiceImpl.java
            • mybatisdao
              • eventDao.java
            • service
              • IEventService.java
            • DemoApplication.java
        • resources
          • mapper
            • eventDao.xml
          • META-INF
            • MANIFEST.MF
          • static
          • templates
          • application.properties
      • test
    • target
    • pom.xml
    • {project name}.iml

2. 配置文件

2.1 application.properties

spring.profiles.active=dev

server.port={server port}

mybatis.type-aliases-package=com.renhao.springmybatis.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml

spring.datasource.url=jdbc:mysql://{mysql server}:3306/mms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
spring.datasource.username={username}
spring.datasource.password={password}
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

2.2 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.renhao.springmybatis</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.7</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.20</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

2.3 创建event对象 - event.java

package com.renhao.springmybatis.demo.entity;
import lombok.Data;
@Data
public class event {
    private String name;
}

2.4 Spring Boot 主类 - DemoApplication.java

package com.renhao.springmybatis.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan(value = {"com.renhao.springmybatis.demo"})
@MapperScan(value = {"com.renhao.springmybatis.demo.mybatisdao"})
@SpringBootApplication
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

3 MVC之Controller、Service、Dao层编写

3.1 Controller层 - TestBootController.java

package com.renhao.springmybatis.demo.controller;
import com.alibaba.fastjson.JSONObject;
import com.renhao.springmybatis.demo.service.IEventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
@RequestMapping("testboot")
public class TestBootController {
    @Autowired
    IEventService eventService;
    @RequestMapping(value = "getevent", method = RequestMethod.GET)
    public JSONObject getEvent() {
        return eventService.getEvent();
    }
}

3.2 Service层

3.2.1 编写IEventService.java

package com.renhao.springmybatis.demo.service;
import com.alibaba.fastjson.JSONObject;
public interface IEventService {
    public JSONObject getEvent();
}

3.2.2 编写EventServiceImpl.java

package com.renhao.springmybatis.demo.implementation;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.renhao.springmybatis.demo.entity.event;
import com.renhao.springmybatis.demo.service.IEventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.renhao.springmybatis.demo.mybatisdao.eventDao;
import java.util.List;
@Service
public class EventServiceImpl implements IEventService {
    @Autowired
    private eventDao eventdao;
    @Override
    public JSONObject getEvent(){
        JSONArray result = new JSONArray();
        List<event> listEvent = eventdao.getEvent();
        for (event event : listEvent){
            JSONObject tmpNode = new JSONObject();
            tmpNode.put("name", event.getName());
            result.add(tmpNode);
        }
        JSONObject finalResult = new JSONObject();
        finalResult.put("result", result);
        return  finalResult;
    }
}

3.3 Dao层

3.3.1 编写eventDao.java

package com.renhao.springmybatis.demo.mybatisdao;
import com.renhao.springmybatis.demo.entity.event;
import java.util.List;
public interface eventDao {
    List<event> getEvent();
}

3.3.2 编写eventDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.renhao.springmybatis.demo.mybatisdao.eventDao">
    <resultMap id="BaseResultMap" type="com.renhao.springmybatis.demo.entity.event">
        <id column="name" property="name" jdbcType="VARCHAR" />
    </resultMap>

    <select id="getEvent" resultType="com.renhao.springmybatis.demo.entity.event">
        SELECT
          `name`
        FROM tb_event
    </select>
</mapper>

3.4 运行主类DemoApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)

2019-04-02 10:06:50.677  INFO 16360 --- [           main] c.r.springmybatis.demo.DemoApplication   : Starting DemoApplication on CTUY7RWX5924901 with PID 16360 (D:\Git\spring-mybatis\target\classes started by rWX592490 in D:\Git\spring-mybatis)
2019-04-02 10:06:50.681  INFO 16360 --- [           main] c.r.springmybatis.demo.DemoApplication   : The following profiles are active: dev
2019-04-02 10:06:52.917  INFO 16360 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8686 (http)
2019-04-02 10:06:52.954  INFO 16360 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-04-02 10:06:52.955  INFO 16360 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.16]
2019-04-02 10:06:52.968  INFO 16360 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_181\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Anaconda3\Scripts;C:\ProgramData\Anaconda3;C:\xampp\mysql\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;%LATEX%;C:\spark\bin;C:\scala\bin;D:\apache-maven-3.5.4\bin;C:\Program Files (x86)\Subversion\bin;D:\zookeeper\bin;%HADOOP%\sbin;D:\hadoop-2.6.5\bin;D:\Program Files\nodejs\;D:\kafka\bin\windows;D:\Program Files (x86)\Graphviz2.38\bin;D:\elasticsearch\bin;D:\tools\kibana\bin;D:\logstash-6.6.0\bin;C:\Program Files\Git/bin;C:\Program Files\TortoiseGit\bin;D:\tools\gradle-5.2.1/bin;C:\Users\rwx592490\AppData\Local\GitHubDesktop\bin;C:\Users\rwx592490\AppData\Roaming\npm;.]
2019-04-02 10:06:53.167  INFO 16360 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-04-02 10:06:53.167  INFO 16360 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2283 ms
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2019-04-02 10:06:53.832  INFO 16360 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-04-02 10:06:54.323  INFO 16360 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8686 (http) with context path ''
2019-04-02 10:06:54.327  INFO 16360 --- [           main] c.r.springmybatis.demo.DemoApplication   : Started DemoApplication in 4.24 seconds (JVM running for 5.704)
Process finished with exit code 1

4 打包成jar包

  1. 打包前确认项目可以正常运行,打开Project Structure 快捷键 Ctrl+Shift+Alt+S,或者点击下图图标
    Idea Spring Boot 集成 mybatis
  2. 将代码打包,操作如下图所示:
    Idea Spring Boot 集成 mybatis
  3. 如下图,module选择需要打包的项目名;Main Class 选择项目的主程序类;输出目录确保是空的,如果里面有一个MANIFEST.MF文件,要先删除掉
    Idea Spring Boot 集成 mybatis
  4. 现在将设置都搞定好后,就开始打包,如果初次打包按照以下流程
    Idea Spring Boot 集成 mybatis
  5. 点击Build Artifacts后会出现下图的弹窗,如果是初次打包点击build,如果不是请点击Rebuild
    Idea Spring Boot 集成 mybatis
  6. 最后找到输出目录即可,所有的输出文件都在out目录下,运行 java -jar xxxx.jar即可运行项目,如果需要后台启动,则运行nphup java -jar xxxx.jar &
    Idea Spring Boot 集成 mybatis