Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
MybatisTraning
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
zero_97
MybatisTraning
Commits
eee98e4c
Commit
eee98e4c
authored
Dec 09, 2019
by
dinghaiyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
作业提交
parent
99d874bb
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
382 additions
and
0 deletions
+382
-0
pom.xml
丁海洋_Mybatis1/pom.xml
+65
-0
readme.md
丁海洋_Mybatis1/readme.md
+3
-0
city.sql
丁海洋_Mybatis1/sql/city.sql
+28
-0
MybatisApplication.java
...java/com/cesgroup/homwork/mybatis/MybatisApplication.java
+14
-0
MyBatisConfig.java
...cesgroup/homwork/mybatis/sample/config/MyBatisConfig.java
+16
-0
City.java
...java/com/cesgroup/homwork/mybatis/sample/entity/City.java
+51
-0
CityMapper.java
...om/cesgroup/homwork/mybatis/sample/mapper/CityMapper.java
+19
-0
BatchService.java
...cesgroup/homwork/mybatis/sample/service/BatchService.java
+43
-0
MapTypeHandler.java
.../cesgroup/homwork/mybatis/sample/type/MapTypeHandler.java
+43
-0
application.properties
丁海洋_Mybatis1/src/main/resources/application.properties
+13
-0
MybatisApplicationTests.java
...com/cesgroup/homwork/mybatis/MybatisApplicationTests.java
+87
-0
No files found.
丁海洋_Mybatis1/pom.xml
0 → 100644
View file @
eee98e4c
<?xml version="1.0" encoding="UTF-8"?>
<?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.2.2.RELEASE
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>
com.cesgroup.homwork
</groupId>
<artifactId>
mybatis
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<name>
mybatis
</name>
<description>
Demo project for Spring Boot
</description>
<properties>
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
2.1.1
</version>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
4.6.4
</version>
</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>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.12
</version>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
丁海洋_Mybatis1/readme.md
0 → 100644
View file @
eee98e4c
执行测试类:
`com.cesgroup.homwork.mybatis.MybatisApplicationTests`
执行测试类:
`com.cesgroup.homwork.mybatis.MybatisApplicationTests`
\ No newline at end of file
丁海洋_Mybatis1/sql/city.sql
0 → 100644
View file @
eee98e4c
/*
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306
Source Server Version : 80013
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 80013
File Encoding : 65001
Date: 2019-12-09 13:34:49
*/
SET
FOREIGN_KEY_CHECKS
=
0
;
-- ----------------------------
-- Table structure for city
-- ----------------------------
DROP
TABLE
IF
EXISTS
`city`
;
CREATE
TABLE
`city`
(
`id`
varchar
(
32
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NOT
NULL
,
`name`
varchar
(
255
)
DEFAULT
NULL
,
`context`
varchar
(
1000
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
;
丁海洋_Mybatis1/src/main/java/com/cesgroup/homwork/mybatis/MybatisApplication.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
;
package
com
.
cesgroup
.
homwork
.
mybatis
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@SpringBootApplication
public
class
MybatisApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
MybatisApplication
.
class
,
args
);
}
}
丁海洋_Mybatis1/src/main/java/com/cesgroup/homwork/mybatis/sample/config/MyBatisConfig.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
config
;
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
config
;
import
com.cesgroup.homwork.mybatis.sample.type.MapTypeHandler
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
MyBatisConfig
{
@Bean
MapTypeHandler
mapTypeHandler
()
{
return
new
MapTypeHandler
();
}
}
\ No newline at end of file
丁海洋_Mybatis1/src/main/java/com/cesgroup/homwork/mybatis/sample/entity/City.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
entity
;
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
entity
;
import
java.util.Map
;
/**
*
*/
public
class
City
{
private
String
id
;
private
String
name
;
private
Map
<
String
,
Object
>
context
;
public
String
getId
()
{
return
id
;
}
public
City
setId
(
String
id
)
{
this
.
id
=
id
;
return
this
;
}
public
String
getName
()
{
return
name
;
}
public
City
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
public
Map
<
String
,
Object
>
getContext
()
{
return
context
;
}
public
City
setContext
(
Map
<
String
,
Object
>
context
)
{
this
.
context
=
context
;
return
this
;
}
@Override
public
String
toString
()
{
return
"City{"
+
"id='"
+
id
+
'\''
+
", name='"
+
name
+
'\''
+
", context="
+
context
+
'}'
;
}
}
\ No newline at end of file
丁海洋_Mybatis1/src/main/java/com/cesgroup/homwork/mybatis/sample/mapper/CityMapper.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
mapper
;
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
mapper
;
import
com.cesgroup.homwork.mybatis.sample.entity.City
;
import
org.apache.ibatis.annotations.Insert
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Select
;
@Mapper
public
interface
CityMapper
{
@Insert
(
"INSERT INTO city (id, name, context) VALUES(#{id}, #{name}, #{context})"
)
void
insert
(
City
city
);
@Select
(
"SELECT id, name, context FROM city WHERE id = #{id}"
)
City
findById
(
String
id
);
}
\ No newline at end of file
丁海洋_Mybatis1/src/main/java/com/cesgroup/homwork/mybatis/sample/service/BatchService.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
service
;
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
service
;
import
cn.hutool.core.lang.Console
;
import
cn.hutool.core.util.IdUtil
;
import
com.cesgroup.homwork.mybatis.sample.entity.City
;
import
com.cesgroup.homwork.mybatis.sample.mapper.CityMapper
;
import
org.apache.ibatis.session.ExecutorType
;
import
org.apache.ibatis.session.SqlSession
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 批量sql处理类
* @author ding.haiyang
* @date 2019/12/9
*/
@Service
public
class
BatchService
{
private
SqlSession
sqlSession
;
public
BatchService
(
SqlSessionFactory
sqlSessionFactory
)
{
sqlSession
=
new
SqlSessionTemplate
(
sqlSessionFactory
,
ExecutorType
.
BATCH
)
;
}
public
int
batchInsertCity
(
List
<
City
>
cities
){
CityMapper
cityMapper
=
sqlSession
.
getMapper
(
CityMapper
.
class
);
//批量保存执行前时间
long
start
=
System
.
currentTimeMillis
();
for
(
City
city
:
cities
)
{
city
.
setId
(
IdUtil
.
simpleUUID
());
cityMapper
.
insert
(
city
);
}
long
end
=
System
.
currentTimeMillis
();
long
time2
=
end
-
start
;
//批量保存执行后的时间
Console
.
log
(
"批量执行时长"
+
time2
);
return
cities
.
size
();
}
}
丁海洋_Mybatis1/src/main/java/com/cesgroup/homwork/mybatis/sample/type/MapTypeHandler.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
type
;
package
com
.
cesgroup
.
homwork
.
mybatis
.
sample
.
type
;
import
cn.hutool.json.JSONUtil
;
import
org.apache.ibatis.type.BaseTypeHandler
;
import
org.apache.ibatis.type.JdbcType
;
import
java.sql.CallableStatement
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.Map
;
/**
* map类型转换器
* @author ding.haiyang
* @date 2019/12/9
*/
public
class
MapTypeHandler
extends
BaseTypeHandler
<
Map
>
{
public
MapTypeHandler
()
{
}
@Override
public
void
setNonNullParameter
(
PreparedStatement
ps
,
int
i
,
Map
map
,
JdbcType
jdbcType
)
throws
SQLException
{
ps
.
setString
(
i
,
JSONUtil
.
toJsonStr
(
map
));
}
@Override
public
Map
getNullableResult
(
ResultSet
rs
,
String
columnName
)
throws
SQLException
{
String
result
=
rs
.
getString
(
columnName
);
return
rs
.
wasNull
()
?
null
:
JSONUtil
.
parseObj
(
result
);
}
@Override
public
Map
getNullableResult
(
ResultSet
rs
,
int
columnIndex
)
throws
SQLException
{
String
result
=
rs
.
getString
(
columnIndex
);
return
rs
.
wasNull
()
?
null
:
JSONUtil
.
parseObj
(
result
);
}
@Override
public
Map
getNullableResult
(
CallableStatement
cs
,
int
columnIndex
)
throws
SQLException
{
String
result
=
cs
.
getString
(
columnIndex
);
return
cs
.
wasNull
()
?
null
:
JSONUtil
.
parseObj
(
result
);
}
}
\ No newline at end of file
丁海洋_Mybatis1/src/main/resources/application.properties
0 → 100644
View file @
eee98e4c
spring.datasource.url
=
jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT-8
spring.datasource.driver-class-name
=
com.mysql.jdbc.Driver
spring.datasource.username
=
root
spring.datasource.password
=
1234
mybatis.type-aliases-package
=
com.cesgroup.homwork.mybatis
mybatis.configuration.map-underscore-to-camel-case
=
true
mybatis.configuration.default-fetch-size
=
100
mybatis.configuration.default-statement-timeout
=
30
丁海洋_Mybatis1/src/test/java/com/cesgroup/homwork/mybatis/MybatisApplicationTests.java
0 → 100644
View file @
eee98e4c
package
com
.
cesgroup
.
homwork
.
mybatis
;
package
com
.
cesgroup
.
homwork
.
mybatis
;
import
cn.hutool.core.lang.Console
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.cesgroup.homwork.mybatis.sample.entity.City
;
import
com.cesgroup.homwork.mybatis.sample.mapper.CityMapper
;
import
com.cesgroup.homwork.mybatis.sample.service.BatchService
;
import
org.junit.jupiter.api.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
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
class
MybatisApplicationTests
{
@Resource
private
CityMapper
cityMapper
;
@Autowired
private
BatchService
batchService
;
///////////////////////////////////////////////////
////
//// 测试类型转换
////
///////////////////////////////////////////////////
@Test
void
contextLoads
()
{
City
city
=
new
City
();
Map
<
String
,
Object
>
context
=
new
HashMap
<>();
context
.
put
(
"a"
,
"aaa"
);
context
.
put
(
"b"
,
"bb"
);
context
.
put
(
"c"
,
"c"
);
context
.
put
(
"d"
,
"dddddddddd"
);
city
.
setId
(
IdUtil
.
simpleUUID
())
// .setId("857b193a846a4246a2087358daa9c9b6")
.
setName
(
RandomUtil
.
randomString
(
4
))
.
setContext
(
context
);
cityMapper
.
insert
(
city
);
}
@Test
void
select
()
{
City
byId
=
cityMapper
.
findById
(
"857b193a846a4246a2087358daa9c9b6"
);
Console
.
log
(
byId
);
Console
.
log
(
JSONUtil
.
toJsonStr
(
byId
));
}
///////////////////////////////////////////////////
////
//// 测试批量处
////
///////////////////////////////////////////////////
@Test
void
batch
()
{
List
<
City
>
cities
=
new
ArrayList
<
City
>();
for
(
int
i
=
0
;
i
<
10000
;
i
++)
{
City
city
=
new
City
();
city
.
setName
(
RandomUtil
.
randomString
(
"是否是法发热人刚明年吧"
,
4
));
cities
.
add
(
city
);
}
batchService
.
batchInsertCity
(
cities
);
this
.
noBath
(
cities
);
}
void
noBath
(
List
<
City
>
cities
){
//批量保存执行前时间
long
start
=
System
.
currentTimeMillis
();
for
(
City
city
:
cities
)
{
city
.
setId
(
IdUtil
.
simpleUUID
());
cityMapper
.
insert
(
city
);
}
long
end
=
System
.
currentTimeMillis
();
long
time2
=
end
-
start
;
//批量保存执行后的时间
Console
.
log
(
"非批量执行时长"
+
time2
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment