内容:
Spring Boot2 + Mybatis 整合
Mybatis Generator自动生成代码
Mybatis PageHelper分页插件
创建maven项目
修改pom.xml 注意springboot、druid、pageHelper的版本号
-
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>
-
-
<groupId>com.sid
groupId>
-
<artifactId>springboot
artifactId>
-
<version>1.0-SNAPSHOT
version>
-
<packaging>jar
packaging>
-
-
-
<parent>
-
<groupId>org.springframework.boot
groupId>
-
<artifactId>spring-boot-starter-parent
artifactId>
-
<version>2.0.5.RELEASE
version>
-
<relativePath/>
-
parent>
-
-
<properties>
-
<project.build.sourceEncoding>UTF-8
project.build.sourceEncoding>
-
<project.reporting.outputEncoding>UTF-8
project.reporting.outputEncoding>
-
<java.version>1.8
java.version>
-
properties>
-
-
<dependencies>
-
-
<dependency>
-
<groupId>org.springframework.boot
groupId>
-
<artifactId>spring-boot-starter-web
artifactId>
-
dependency>
-
-
<dependency>
-
<groupId>org.springframework.boot
groupId>
-
<artifactId>spring-boot-starter-test
artifactId>
-
<scope>test
scope>
-
dependency>
-
-
<dependency>
-
<groupId>org.apache.commons
groupId>
-
<artifactId>commons-lang3
artifactId>
-
<version>3.4
version>
-
dependency>
-
-
-
<dependency>
-
<groupId>org.mybatis.spring.boot
groupId>
-
<artifactId>mybatis-spring-boot-starter
artifactId>
-
<version>1.3.2
version>
-
dependency>
-
-
<dependency>
-
<groupId>mysql
groupId>
-
<artifactId>mysql-connector-java
artifactId>
-
<version>5.1.38
version>
-
dependency>
-
-
-
<dependency>
-
<groupId>com.alibaba
groupId>
-
<artifactId>druid-spring-boot-starter
artifactId>
-
<version>1.1.9
version>
-
dependency>
-
-
-
<dependency>
-
<groupId>com.github.pagehelper
groupId>
-
<artifactId>pagehelper-spring-boot-starter
artifactId>
-
<version>1.2.5
version>
-
dependency>
-
-
-
dependencies>
-
-
<build>
-
<plugins>
-
<plugin>
-
<groupId>org.springframework.boot
groupId>
-
<artifactId>spring-boot-maven-plugin
artifactId>
-
plugin>
-
-
-
<plugin>
-
<groupId>org.mybatis.generator
groupId>
-
<artifactId>mybatis-generator-maven-plugin
artifactId>
-
<version>1.3.2
version>
-
<configuration>
-
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml
configurationFile>
-
<overwrite>true
overwrite>
-
<verbose>true
verbose>
-
configuration>
-
plugin>
-
-
plugins>
-
build>
-
-
-
project>
创建启动类App.java
-
package com.sid;
-
-
import org.mybatis.spring.annotation.MapperScan;
-
import org.springframework.boot.SpringApplication;
-
import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-
@SpringBootApplication
-
@MapperScan(
"com.sid.mapper")
//将项目中对应的mapper类的路径加进来就可以了
-
public
class App {
-
public static void main(String[] args) {
-
SpringApplication.run(App.class, args);
-
}
-
}
创建application.yml
-
server:
-
port: 8088
-
servlet:
-
context-path: /sid
-
-
spring:
-
mvc:
-
view:
-
prefix: /
-
suffix: .html
-
datasource:
-
url: jdbc:mysql://localhost:3306/sid
-
username: root
-
password: root
-
# 使用druid数据源
-
type: com.alibaba.druid.pool.DruidDataSource
-
driver-class-name: com.mysql.jdbc.Driver
-
-
-
## 该配置节点为独立的节点,不是在在spring的节点下
-
mybatis:
-
mapper-locations: classpath:mapping/*.xml
#注意:一定要对应mapper映射xml文件的所在路径
-
type-aliases-package: com.sid.model
# 注意:对应实体类的路径
-
configuration:
-
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#控制台打印sql
-
-
#pagehelper分页插件
-
pagehelper:
-
helperDialect: mysql
-
reasonable:
true
-
supportMethodsArguments:
true
-
params: count=countSql
-
-
在resources/generator下创建文件generatorConfig.xml
-
xml version="1.0" encoding="UTF-8"?>
-
-
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
-
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
-
<generatorConfiguration>
-
-
<classPathEntry location="F:\MySQL\Connector.J 5.1\mysql-connector-java-5.1.38-bin.jar"/>
-
<context id="DB2Tables" targetRuntime="MyBatis3">
-
<commentGenerator>
-
<property name="suppressDate" value="true"/>
-
-
<property name="suppressAllComments" value="true"/>
-
commentGenerator>
-
-
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/sid" userId="root" password="root">
-
jdbcConnection>
-
<javaTypeResolver>
-
<property name="forceBigDecimals" value="false"/>
-
javaTypeResolver>
-
-
<javaModelGenerator targetPackage="com.sid.model" targetProject="src/main/java">
-
<property name="enableSubPackages" value="true"/>
-
<property name="trimStrings" value="true"/>
-
javaModelGenerator>
-
-
<sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
-
<property name="enableSubPackages" value="true"/>
-
sqlMapGenerator>
-
-
<javaClientGenerator type="XMLMAPPER" targetPackage="com.sid.mapper" targetProject="src/main/java">
-
<property name="enableSubPackages" value="true"/>
-
javaClientGenerator>
-
-
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
table>
-
context>
-
generatorConfiguration>
项目目录
数据库中的表
-
CREATE
TABLE
`user` (
-
`id`
bigint(
32)
NOT
NULL
COMMENT
'用户ID',
-
`name`
varchar(
30)
NOT
NULL
COMMENT
'用户名',
-
`password`
varchar(
30)
NOT
NULL
COMMENT
'密码',
-
`mobile_phone`
varchar(
20)
NOT
NULL
COMMENT
'手机号',
-
PRIMARY
KEY (
`id`)
-
)
ENGINE=
InnoDB
DEFAULT
CHARSET=utf8;
mybatis自动生成代码的插件使用方式
run
然会就会自动生成UserMapper.xml、 User.java 、UserMapper.java
UserController.java
-
package com.sid.controller;
-
-
import com.github.pagehelper.PageInfo;
-
import com.sid.model.User;
-
import com.sid.service.UserService;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
-
@Controller
-
@RequestMapping(value =
"/user")
-
public
class UserController {
-
-
@Autowired
-
private UserService userService;
-
-
@ResponseBody
-
@RequestMapping(value =
"/add")
-
public int addUser(User user){
-
return userService.addUser(user);
-
}
-
-
@ResponseBody
-
@RequestMapping(value =
"/delete")
-
public int deleteUser(String id){
-
return userService.deleteUser(id);
-
}
-
-
@ResponseBody
-
@RequestMapping(value =
"/update")
-
public int updateUser(User user){
-
return userService.updateUser(user);
-
}
-
-
@ResponseBody
-
@RequestMapping(value =
"/selectAll")
-
public PageInfo
selectAll(int pageNum, int pageSize) {
-
return userService.selectAll( pageNum, pageSize);
-
}
-
}
UserService.java
-
package com.sid.service;
-
-
import com.github.pagehelper.PageInfo;
-
import com.sid.model.User;
-
-
public
interface UserService {
-
int addUser(User user);
-
-
int deleteUser(String id);
-
-
int updateUser(User user);
-
-
/*
-
* pageNum 开始页数
-
* pageSize 每页显示的数据条数
-
* */
-
PageInfo
selectAll(int pageNum, int pageSize) ;
-
}
UserServiceImpl.java
-
package com.sid.service.impl;
-
-
import com.github.pagehelper.PageHelper;
-
import com.github.pagehelper.PageInfo;
-
import com.sid.mapper.UserMapper;
-
import com.sid.model.User;
-
import com.sid.service.UserService;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Service;
-
-
import java.util.List;
-
-
@Service(value =
"userService")
-
public
class UserServiceImpl implements UserService {
-
-
@Autowired
-
private UserMapper userMapper;
-
-
@Override
-
public int addUser(User user) {
-
return userMapper.insertSelective(user);
-
}
-
-
@Override
-
public int deleteUser(String id) {
-
return userMapper.deleteByPrimaryKey(id);
-
}
-
-
@Override
-
public int updateUser(User user) {
-
return userMapper.updateByPrimaryKey(user);
-
}
-
-
/*
-
* pageNum 开始页数
-
* pageSize 每页显示的数据条数
-
* */
-
@Override
-
public PageInfo
selectAll(int pageNum, int pageSize) {
-
-
PageHelper.startPage(pageNum, pageSize,
"id desc");
//开始起始页
-
List
userList = userMapper.selectAll();
// 获取数据
-
PageInfo
page =
new PageInfo<>(userList);
// 实例化PageInfo
-
return page;
-
}
-
-
}
UserMapper.java
-
package com.sid.mapper;
-
-
import com.sid.model.User;
-
import org.springframework.stereotype.Component;
-
-
import java.util.List;
-
-
@Component
-
public
interface UserMapper {
-
int deleteByPrimaryKey(String id);
-
-
int insert(User record);
-
-
int insertSelective(User record);
-
-
User selectByPrimaryKey(String id);
-
-
int updateByPrimaryKeySelective(User record);
-
-
int updateByPrimaryKey(User record);
-
-
-
List
selectAll() ;
-
}
UserMapping.xml
-
xml version="1.0" encoding="UTF-8" ?>
-
-
<mapper namespace="com.sid.mapper.UserMapper" >
-
<resultMap id="BaseResultMap" type="com.sid.model.User" >
-
<id column="id" property="id" jdbcType="BIGINT" />
-
<result column="name" property="name" jdbcType="VARCHAR" />
-
<result column="password" property="password" jdbcType="VARCHAR" />
-
<result column="mobile_phone" property="mobilePhone" jdbcType="VARCHAR" />
-
resultMap>
-
<sql id="Base_Column_List" >
-
id, name, password, mobile_phone
-
sql>
-
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
-
select
-
<include refid="Base_Column_List" />
-
from user
-
where id = #{id,jdbcType=BIGINT}
-
select>
-
-
<select id="selectAll" resultMap="BaseResultMap" >
-
select
-
<include refid="Base_Column_List" />
-
from user
-
select>
-
-
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
-
delete from user
-
where id = #{id,jdbcType=BIGINT}
-
delete>
-
<insert id="insert" parameterType="com.sid.model.User" >
-
insert into user (id, name, password,
-
mobile_phone)
-
values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
-
#{mobilePhone,jdbcType=VARCHAR})
-
insert>
-
<insert id="insertSelective" parameterType="com.sid.model.User" >
-
insert into user
-
<trim prefix="(" suffix=")" suffixOverrides="," >
-
<if test="id != null" >
-
id,
-
if>
-
<if test="name != null" >
-
name,
-
if>
-
<if test="password != null" >
-
password,
-
if>
-
<if test="mobilePhone != null" >
-
mobile_phone,
-
if>
-
trim>
-
<trim prefix="values (" suffix=")" suffixOverrides="," >
-
<if test="id != null" >
-
#{id,jdbcType=BIGINT},
-
if>
-
<if test="name != null" >
-
#{name,jdbcType=VARCHAR},
-
if>
-
<if test="password != null" >
-
#{password,jdbcType=VARCHAR},
-
if>
-
<if test="mobilePhone != null" >
-
#{mobilePhone,jdbcType=VARCHAR},
-
if>
-
trim>
-
insert>
-
<update id="updateByPrimaryKeySelective" parameterType="com.sid.model.User" >
-
update user
-
<set >
-
<if test="name != null" >
-
name = #{name,jdbcType=VARCHAR},
-
if>
-
<if test="password != null" >
-
password = #{password,jdbcType=VARCHAR},
-
if>
-
<if test="mobilePhone != null" >
-
mobile_phone = #{mobilePhone,jdbcType=VARCHAR},
-
if>
-
set>
-
where id = #{id,jdbcType=BIGINT}
-
update>
-
<update id="updateByPrimaryKey" parameterType="com.sid.model.User" >
-
update user
-
set name = #{name,jdbcType=VARCHAR},
-
password = #{password,jdbcType=VARCHAR},
-
mobile_phone = #{mobilePhone,jdbcType=VARCHAR}
-
where id = #{id,jdbcType=BIGINT}
-
update>
-
mapper>
User.java
-
package com.sid.model;
-
-
public
class User {
-
private Long id;
-
-
private String name;
-
-
private String password;
-
-
private String mobilePhone;
-
-
public Long getId() {
-
return id;
-
}
-
-
public void setId(Long id) {
-
this.id = id;
-
}
-
-
public String getName() {
-
return name;
-
}
-
-
public void setName(String name) {
-
this.name = name ==
null ?
null : name.trim();
-
}
-
-
public String getPassword() {
-
return password;
-
}
-
-
public void setPassword(String password) {
-
this.password = password ==
null ?
null : password.trim();
-
}
-
-
public String getMobilePhone() {
-
return mobilePhone;
-
}
-
-
public void setMobilePhone(String mobilePhone) {
-
this.mobilePhone = mobilePhone ==
null ?
null : mobilePhone.trim();
-
}
-
}
添加11条数据到数据库中
查询
结果
打开mybatis执行的SQL打印会在后台看见
还是执行了一次select count(0)