Idea Spring Boot 集成 mybatis
Spring Boot
1. 新建一个Spring Boot项目
File
-> New
-> Project
-> Spring Initializr
填写好Group、Artifact和对应的java版本。
添加好项目要依赖的包
项目结构:
- {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包
- 打包前确认项目可以正常运行,打开Project Structure 快捷键 Ctrl+Shift+Alt+S,或者点击下图图标
- 将代码打包,操作如下图所示:
- 如下图,module选择需要打包的项目名;Main Class 选择项目的主程序类;输出目录确保是空的,如果里面有一个MANIFEST.MF文件,要先删除掉
- 现在将设置都搞定好后,就开始打包,如果初次打包按照以下流程
- 点击Build Artifacts后会出现下图的弹窗,如果是初次打包点击build,如果不是请点击Rebuild
- 最后找到输出目录即可,所有的输出文件都在out目录下,运行
java -jar xxxx.jar
即可运行项目,如果需要后台启动,则运行nphup java -jar xxxx.jar &