SpringBoot(16):SpringBoot統合Mybatis-Plus
18160 ワード
Mybatis-Plusは総じてMybatis Generatorより使いやすく、会社独自のフレームワークもこれで便利です.
このセクションのバージョンでは、基本的な特性しか使用されていませんが、ほとんどの削除変更を満たすことができます.
一、環境準備 SpringBoot 1.5.10.RELEASE Mybatis-Plus 2.1.9
Mybatis-Plus公式アドレス:http://mp.baomidou.com/
pom依存、便宜上、全部貼っておきましょう:
二、プロジェクト構造
最初のプロジェクト構造をリストし、model、mapper、service、mapper xml、controllerについては自動的に生成します.
三、コード詳細
データの準備
testライブラリにuserテーブルを作成します.
application.yml
構成されたいくつかのパスをあなたのプロジェクトに変更することに注意してください.
druid.properties
DruidConfiguration.java
ここではcontrollerインタフェース方式でプレゼンテーションする必要はなく、testプレゼンテーションを使用してstarter-webを導入していないため、druidのservletは一時的に注釈され、使用するものがあれば開くことができ、依存を加えることができます.
MybatisConfiguration.java
ここのMapperScanに注意して、あなたのプロジェクトmapperフォルダのパスに変えてください.
コード作成ツールクラスGenerator.java
データベースリンクと出力パスに変更すればいいです.
四、自動生成コード
Generator Mainメソッドを実行し、出力パスに進むと、コードファイルが生成されていることがわかります.
model,mapper,serviceをcnにコピーする.saytimeディレクトリの下でmybatis/mappersフォルダをsrc/main/resourcesディレクトリの下にコピーします.ここではcontrollerは表示されませんので、webはコピーされません.最終的なプロジェクト構造図は以下の通りです.
絵輪部分は自動的に生成されるコードで、具体的なコードの内容はここでは貼られません.
五、テスト
SpringbootMybatisPlusApplicationTests.java
出力結果:
六、より多くの使用方法
いくつかのよく使われる添削方法を列挙して、実は最も速い方法は公式サイトに行って例を見ることです.クエリーid=1のユーザー クエリーname=張三のユーザー クエリーid>1のユーザー id=1のユーザ名を変更 ユーザーの追加 ユーザの削除 ページング・クエリー・ユーザー クエリーid>1ページに1つのデータ、2ページ目、すなわち3番目のデータ.
基本的な方法は、上記のように、公式ドキュメントを照会する他の要件があります.
このセクションのバージョンでは、基本的な特性しか使用されていませんが、ほとんどの削除変更を満たすことができます.
一、環境準備
Mybatis-Plus公式アドレス:http://mp.baomidou.com/
pom依存、便宜上、全部貼っておきましょう:
4.0.0
cn.saytime
springboot-mybatis-plus
0.0.1-SNAPSHOT
jar
springboot-mybatis-plus
SpringBoot With Mybatis Plus
org.springframework.boot
spring-boot-starter-parent
1.5.10.RELEASE
UTF-8
UTF-8
1.8
1.3.8.RELEASE
1.0.26
2.1.9
1.0.5
org.springframework.boot
spring-boot-starter
com.alibaba
druid
${druid.version}
mysql
mysql-connector-java
runtime
com.baomidou
mybatisplus-spring-boot-starter
${mybatisplus-spring-boot-starter.version}
com.baomidou
mybatis-plus
${mybatis-plus.version}
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
二、プロジェクト構造
最初のプロジェクト構造をリストし、model、mapper、service、mapper xml、controllerについては自動的に生成します.
三、コード詳細
データの準備
testライブラリにuserテーブルを作成します.
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT ' ID',
`name` varchar(50) DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' '
insert into `user` (`id`, `name`) values('1',' ');
insert into `user` (`id`, `name`) values('2',' ');
insert into `user` (`id`, `name`) values('3',' ');
application.yml
構成されたいくつかのパスをあなたのプロジェクトに変更することに注意してください.
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
username: root
password: root
mybatis-plus:
# src/main/java classpath:/com/yourpackage/*/mapper/*Mapper.xml
# resource classpath:/mapper/*Mapper.xml
mapper-locations: classpath:mybatis/mappers/*Mapper.xml
# , package
typeAliasesPackage: cn.saytime.model
global-config:
# 0:" ID ", 1:" ID",2:" ID ( ID)", 3:" ID UUID";
id-type: 0
# 0:" ",1:" NULL "),2:" "
field-strategy: 1
#
#db-column-underline: true
# mapper
#refresh-mapper: true
#
#capital-mode: true
# Sequence
#key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
# ( 3 )
#logic-delete-value: 1
#logic-not-delete-value: 0
#sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
#
#meta-object-handler: com.baomidou.springboot.MyMetaObjectHandler
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
# JdbcTypeForNull
jdbc-type-for-null: 'null'
druid.properties
#--------------------------
# ,
# , ,
spring.datasource.initialSize=5
spring.datasource.minIdle=1
spring.datasource.maxActive=50
#
spring.datasource.maxWait=60000
# , ,
spring.datasource.timeBetweenEvictionRunsMillis=60000
# ,
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# PSCache, PSCache
spring.datasource.poolPreparedStatements=false
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# filters, sql ,'wall'
spring.datasource.filters=stat,wall,log4j
# connectProperties mergeSql ; SQL
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# DruidDataSource
#spring.datasource.useGlobalDataSourceStat=true
DruidConfiguration.java
ここではcontrollerインタフェース方式でプレゼンテーションする必要はなく、testプレゼンテーションを使用してstarter-webを導入していないため、druidのservletは一時的に注釈され、使用するものがあれば開くことができ、依存を加えることができます.
package cn.saytime.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
/**
* @author zh
* @ClassName cn.saytime.config.DruidConfiguration
* @Description
*/
@Configuration
@PropertySource(value = "classpath:druid.properties")
public class DruidConfiguration {
@Bean(destroyMethod = "close", initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
return new DruidDataSource();
}
//
// /**
// * StatViewServlet
// *
// * @return
// */
// @Bean
// public ServletRegistrationBean druidStatViewServlet() {
// //org.springframework.boot.context.embedded.ServletRegistrationBean .
// ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//
// // :initParams
// // :
// servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// //IP ( ,deny allow) : deny :Sorry, you are not permitted to view this page.
//// servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
// // .
// servletRegistrationBean.addInitParameter("loginUsername", "admin");
// servletRegistrationBean.addInitParameter("loginPassword", "123456");
// // .
// servletRegistrationBean.addInitParameter("resetEnable", "false");
// return servletRegistrationBean;
// }
//
// /**
// * :filterRegistrationBean
// *
// * @return
// */
// @Bean
// public FilterRegistrationBean druidStatFilter() {
//
// FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//
// // .
// filterRegistrationBean.addUrlPatterns("/*");
//
// // .
// filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
// return filterRegistrationBean;
// }
}
MybatisConfiguration.java
ここのMapperScanに注意して、あなたのプロジェクトmapperフォルダのパスに変えてください.
package cn.saytime.config;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author zh
* @ClassName cn.saytime.config.MybatisConfiguration
* @Description
*/
@Configuration
@MapperScan("cn.saytime.mapper*")
public class MybatisConfiguration {
/*
* ,
* , 【 】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/*
* oracle JdbcTypeForNull
* :https://gitee.com/baomidou/mybatisplus-boot-starter/issues/IHS8X
, yml:
mybatis-plus:
confuguration
dbc-type-for-null: 'null'
@Bean
public ConfigurationCustomizer configurationCustomizer(){
return new MybatisPlusCustomizers();
}
class MybatisPlusCustomizers implements ConfigurationCustomizer {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setJdbcTypeForNull(JdbcType.NULL);
}
}
*/
}
コード作成ツールクラスGenerator.java
データベースリンクと出力パスに変更すればいいです.
package cn.saytime.util;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* @author zh
* @ClassName cn.aduu.util.Generator
* @Description
* @date 2018-02-22 11:37:14
*/
public class Generator {
public static void main(String[] args) {
String packageName = "cn.saytime";
boolean serviceNameStartWithI = false;//auth -> UserService, true: auth -> IUserService
generateByTables(serviceNameStartWithI, packageName, "saytime", "test", "user");
System.out.println("completed...");
}
/**
* @param serviceNameStartWithI
* @param packageName
* @param author
* @param database
* @param tableNames
*/
private static void generateByTables(boolean serviceNameStartWithI, String packageName, String author, String database, String... tableNames) {
GlobalConfig config = new GlobalConfig();
String dbUrl = "jdbc:mysql://127.0.0.1:3306/" + database + "?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false";
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)
.setUrl(dbUrl)
.setUsername("root")
.setPassword("root")
.setDriverName("com.mysql.jdbc.Driver");
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)
.setEntityLombokModel(false)
.setDbColumnUnderline(true)
.setNaming(NamingStrategy.underline_to_camel)
// .setSuperMapperClass("cn.saytime.mapper.BaseMapper")
.setInclude(tableNames);// ,
config.setActiveRecord(false)
.setAuthor(author)
.setOutputDir("e:\\codeGen")
.setFileOverride(true)
.setEnableCache(false);
if (!serviceNameStartWithI) {
config.setServiceName("%sService");
}
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(
new PackageConfig()
.setParent(packageName)
.setController("web")
.setEntity("model")
.setMapper("mapper")
.setService("service")
.setServiceImpl("service.impl")
.setXml("mybatis.mappers")
).execute();
}
}
四、自動生成コード
Generator Mainメソッドを実行し、出力パスに進むと、コードファイルが生成されていることがわかります.
cn
saytime
model
User.java
mapper
UserMapper.java
service
impl
UserServiceImpl.java
UserService.java
web
UserController.java
mybatis
mappers
UserMapper.xml
model,mapper,serviceをcnにコピーする.saytimeディレクトリの下でmybatis/mappersフォルダをsrc/main/resourcesディレクトリの下にコピーします.ここではcontrollerは表示されませんので、webはコピーされません.最終的なプロジェクト構造図は以下の通りです.
絵輪部分は自動的に生成されるコードで、具体的なコードの内容はここでは貼られません.
五、テスト
SpringbootMybatisPlusApplicationTests.java
package cn.saytime;
import cn.saytime.model.User;
import cn.saytime.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisPlusApplicationTests {
@Autowired
private UserService userService;
@Test
public void contextLoads() {
//
List users = userService.selectList(null);
System.out.println(users);
}
}
出力結果:
[User{, id=1, name= }, User{, id=2, name= }, User{, id=3, name= }]
六、より多くの使用方法
いくつかのよく使われる添削方法を列挙して、実は最も速い方法は公式サイトに行って例を見ることです.
User user = userService.selectById(1);
User user = userService.selectOne(new EntityWrapper().eq("name", " "));
List userList = userService.selectList(new EntityWrapper().gt("id", 1));
User user = userService.selectById(1);
user.setName(" 2");
boolean b = userService.updateById(user);
User user = new User();
user.setName(" ");
boolean insert = userService.insert(user);
boolean b = userService.deleteById(1);
Page<User> userPage = new Page<>();
userPage.setCurrent(2);
userPage.setSize(1);
userService.selectPage(userPage, new EntityWrapper<User>().gt("id", 1));
List<User> userList = userPage.getRecords();
System.out.println(userList);
[User{, id=3, name= }]
基本的な方法は、上記のように、公式ドキュメントを照会する他の要件があります.