1.创建项目
2.一直下一步,结构如下
3.配置maven
4.完成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 https://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.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.zhao</groupId>
<artifactId>springboot_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo1</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-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<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.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>cn.easyproject</groupId>
<artifactId>orai18n</artifactId>
<version>12.1.0.2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--自动生成代码-->
<plugin>
<!--Generator插件依赖-->
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--MyBaits-generator的配置文件generatorConfig.xml的位置-->
<configurationFile>src/test/resources/config/generatorConfig.xml</configurationFile>
<!--是否覆盖同名文件(只是针对XML文件,java文件生成类似*.java.1、*.java.2形式的文件)-->
<overwrite>true</overwrite>
<!--是否将生成过程输出至控制台-->
<verbose>true</verbose>
</configuration>
</plugin> <!--自动生成代码-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</project>
5.创建数据库
6.完成application.properties
#配置端口
server.port=8080
#外网地址
spring.datasource.url=jdbc:oracle:thin:@IP:1521:orcl
#spring.datasource.url=jdbc:mysql://localhost/nn?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=C##wl_2020
spring.datasource.password=wl_2020
spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.datasource.initialSize=20
spring.datasource.minIdle=20
spring.datasource.maxActive=200
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
#配置这句话,控制台输出sql语句
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis.mapper-locations= classpath:mapper/*.xml
mybatis.type-aliases-package=cn.zhao.model
##视图层控制 用mvc方式访问templates下的HTML
#spring.mvc.view.prefix=classpath:/templates/
#spring.mvc.view.suffix=.html
#spring.mvc.static-path-pattern=/static/**
#
#spring.thymeleaf.mode=HTML5
#spring.thymeleaf.encoding=UTF-8
#spring.thymeleaf.content-type=text/html
##开发时关闭缓存,不然没法看到实时页面
#spring.thymeleaf.cache=false
##thymeleaf这样配置就可以直接访问static下的HTML(和mvc访问方式二选一)
#spring.thymeleaf.prefix = classpath:/static/
#spring.thymeleaf.suffix = .html
7.创建逆向工程,在test下面创建resources/config/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>
<!-- 数据库驱动:选择你的本地MAVEN上面的数据库驱动包-->
<classPathEntry location="D:\Maven\repo\com\oracle\ojdbc\ojdbc8\19.3.0.0\ojdbc8-19.3.0.0.jar"/>
<classPathEntry location="D:\Maven\repo\cn\easyproject\orai18n\12.1.0.2.0\orai18n-12.1.0.2.0.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@ip:1521:orcl" userId="C##wl_2020"
password="wl_2020">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="cn.zhao.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.zhao.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="PERSON" domainObjectName="Person" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
8.创建服务器
mybatis-generator
mybatis-generator:generate -e
9.启动
生成的结构
10.完成其余的代码
PersonMapper.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="cn.zhao.mapper.PersonMapper">
<resultMap id="BaseResultMap" type="cn.zhao.model.Person">
<id column="ID" property="id" jdbcType="NUMERIC"/>
<result column="NAME" property="name" jdbcType="VARCHAR"/>
<result column="PASSWORD" property="password" jdbcType="VARCHAR"/>
<result column="PHONE" property="phone" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
ID, NAME, PASSWORD, PHONE
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Short">
select
<include refid="Base_Column_List"/>
from PERSON
where ID = #{id,jdbcType=NUMERIC}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
delete from PERSON
where ID = #{id,jdbcType=NUMERIC}
</delete>
<insert id="insert" parameterType="cn.zhao.model.Person">
insert into PERSON (ID, NAME, PASSWORD,
PHONE)
values (#{id,jdbcType=NUMERIC}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
#{phone,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="cn.zhao.model.Person">
insert into PERSON
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="name != null">
NAME,
</if>
<if test="password != null">
PASSWORD,
</if>
<if test="phone != null">
PHONE,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=NUMERIC},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="password != null">
#{password,jdbcType=VARCHAR},
</if>
<if test="phone != null">
#{phone,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="cn.zhao.model.Person">
update PERSON
<set>
<if test="name != null">
NAME = #{name,jdbcType=VARCHAR},
</if>
<if test="password != null">
PASSWORD = #{password,jdbcType=VARCHAR},
</if>
<if test="phone != null">
PHONE = #{phone,jdbcType=VARCHAR},
</if>
</set>
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKey" parameterType="cn.zhao.model.Person">
update PERSON
set NAME = #{name,jdbcType=VARCHAR},
PASSWORD = #{password,jdbcType=VARCHAR},
PHONE = #{phone,jdbcType=VARCHAR}
where ID = #{id,jdbcType=NUMERIC}
</update>
<select id="finaAll" resultType="cn.zhao.model.Person">
SELECT * FROM PERSON
</select>
</mapper>
PersonMapper
package cn.zhao.mapper;
import cn.zhao.model.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper()
public interface PersonMapper {
List<Person> finaAll();
int deleteByPrimaryKey(Short id);
int insert(Person record);
int insertSelective(Person record);
Person selectByPrimaryKey(Short id);
int updateByPrimaryKeySelective(Person record);
int updateByPrimaryKey(Person record);
}
PersonService
package cn.zhao.service;
import cn.zhao.model.Person;
import com.github.pagehelper.PageInfo;
public interface PersonService {
int addPerson(Person person);
PageInfo<Person> findAll(int pageNum, int pageSize);
}
PersonServiceImpl
package cn.zhao.service;
import cn.zhao.mapper.PersonMapper;
import cn.zhao.model.Person;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service("personService")
public class PersonServiceImpl implements PersonService {
@Autowired
@Resource
private PersonMapper personMapper;
@Override
public int addPerson(Person person) {
return personMapper.insert(person);
}
@Override
public PageInfo<Person> findAll(int pageNum, int pageSize) {
//将参数传给这个方法就可以实现物理分页了
PageHelper.startPage(pageNum, pageSize);
List<Person> userDomains = personMapper.finaAll();
PageInfo result = new PageInfo(userDomains);
return result;
}
}
PersonController
package cn.zhao.controller;
import cn.zhao.model.Person;
import cn.zhao.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonService ps;
@PostMapping("/add")
public int addPerson(Person person) {
return ps.addPerson(person);
}
@PostMapping("/all")
public Object findAll(
@RequestParam(name = "pageNum", required = false, defaultValue = "1")
int pageNum,
@RequestParam(name = "pageSize", required = false, defaultValue = "10")
int pageSize) {
return ps.findAll(pageNum, pageSize);
}
}
package cn.zhao;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("cn.zhao.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
最后:测试