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
luoyifang
MybatisTraning
Commits
e3314dec
Commit
e3314dec
authored
Dec 10, 2019
by
万建斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2019-12-10 作业提交
parent
8c5164a4
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
405 additions
and
0 deletions
+405
-0
pom.xml
万建斌_Mybatis1/pom.xml
+55
-0
User.java
...1/src/main/java/com/cesgroup/mybatiswork/entity/User.java
+46
-0
MyTypeHandle.java
...in/java/com/cesgroup/mybatiswork/handle/MyTypeHandle.java
+66
-0
MyMapper.xml
万建斌_Mybatis1/src/main/resource/MyMapper.xml
+27
-0
db.properties
万建斌_Mybatis1/src/main/resource/db.properties
+6
-0
mybatis-config.xml
万建斌_Mybatis1/src/main/resource/mybatis-config.xml
+31
-0
mybatis.sql
万建斌_Mybatis1/src/main/resource/mybatis.sql
+32
-0
AppTest.java
...atis1/src/test/java/com/cesgroup/mybatiswork/AppTest.java
+142
-0
No files found.
万建斌_Mybatis1/pom.xml
0 → 100644
View file @
e3314dec
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
<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.cesgroup
</groupId>
<artifactId>
万建斌_Mybatis1
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<name>
万建斌_Mybatis1
</name>
<url>
http://maven.apache.org
</url>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.17
</version>
</dependency>
<dependency>
<groupId>
org.mybatis
</groupId>
<artifactId>
mybatis
</artifactId>
<version>
3.2.8
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.54
</version>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.12
</version>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
1.8
</source>
<target>
1.8
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
万建斌_Mybatis1/src/main/java/com/cesgroup/mybatiswork/entity/User.java
0 → 100644
View file @
e3314dec
package
com
.
cesgroup
.
mybatiswork
.
entity
;
package
com
.
cesgroup
.
mybatiswork
.
entity
;
import
java.io.Serializable
;
import
com.alibaba.fastjson.JSONObject
;
/**
* @Description: 用户类
* @Param:
* @return:
* @Author: Wanjianbin
* @Date: 2019/12/10
*/
public
class
User
implements
Serializable
{
public
int
getId
()
{
return
id
;
}
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
JSONObject
getInfo
()
{
return
info
;
}
public
void
setInfo
(
JSONObject
info
)
{
this
.
info
=
info
;
}
@Override
public
String
toString
()
{
return
"User [id="
+
id
+
", name="
+
name
+
", info="
+
JSONObject
.
toJSONString
(
info
)
+
"]"
;
}
int
id
;
String
name
;
JSONObject
info
;
}
万建斌_Mybatis1/src/main/java/com/cesgroup/mybatiswork/handle/MyTypeHandle.java
0 → 100644
View file @
e3314dec
package
com
.
cesgroup
.
mybatiswork
.
handle
;
package
com
.
cesgroup
.
mybatiswork
.
handle
;
import
java.sql.CallableStatement
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
org.apache.ibatis.type.BaseTypeHandler
;
import
org.apache.ibatis.type.JdbcType
;
import
com.alibaba.fastjson.JSONObject
;
/**
* @Description: 类型转换器
* @Param:
* @return:
* @Author: Wanjianbin
* @Date: 2019/12/10
*/
public
class
MyTypeHandle
extends
BaseTypeHandler
<
JSONObject
>{
@Override
public
JSONObject
getNullableResult
(
ResultSet
rs
,
String
cloumName
)
throws
SQLException
{
String
infoJsonString
=
rs
.
getString
(
cloumName
);
JSONObject
infObject
=
null
;
try
{
infObject
=
JSONObject
.
parseObject
(
infoJsonString
);
//System.out.println("----将json串转成json对象成功!----");
}
catch
(
Exception
e
)
{
System
.
err
.
println
(
"将json串转成json对象失败!"
);;
}
return
infObject
;
}
@Override
public
JSONObject
getNullableResult
(
CallableStatement
arg0
,
int
arg1
)
throws
SQLException
{
// TODO Auto-generated method stub
return
null
;
}
@Override
public
void
setNonNullParameter
(
PreparedStatement
statement
,
int
i
,
JSONObject
infoObject
,
JdbcType
jdbcType
)
throws
SQLException
{
// TODO Auto-generated method stub
try
{
String
userInfoString
=
JSONObject
.
toJSONString
(
infoObject
);
statement
.
setString
(
i
,
userInfoString
);
//System.out.println("----将对象转化为字符串成功!----:"+userInfoString);
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"----将对象转化为字符串失败!----"
);
}
}
@Override
public
JSONObject
getNullableResult
(
ResultSet
arg0
,
int
arg1
)
throws
SQLException
{
// TODO Auto-generated method stub
return
null
;
}
}
万建斌_Mybatis1/src/main/resource/MyMapper.xml
0 → 100644
View file @
e3314dec
<?xml version="1.0" encoding="UTF-8" ?>
<?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:命名空间,随便写,一般保证命名空间唯一 -->
<mapper
namespace=
"MyMapper"
>
<!-- statement,内容:sql语句。id:唯一标识,随便写,在同一个命名空间下保持唯一
resultType:sql语句查询结果集的封装类型,tb_user即为数据库中的表
-->
<select
id=
"selectUser"
resultType=
"com.cesgroup.mybatiswork.entity.User"
>
select * from mybatis where id = #{id}
</select>
<insert
id=
"insert"
parameterType=
"com.cesgroup.mybatiswork.entity.User"
>
INSERT INTO mybatis (id, name, info)
VALUES(#{id}, #{name}, #{info})
</insert>
<insert
id=
"insertBatch"
>
INSERT INTO mybatis
(id, name, info)
VALUES
<foreach
collection =
"list"
item=
"user"
separator =
","
>
(#{user.id}, #{user.name}, #{user.info})
</foreach >
</insert>
</mapper>
\ No newline at end of file
万建斌_Mybatis1/src/main/resource/db.properties
0 → 100644
View file @
e3314dec
driver
=
com.mysql.cj.jdbc.Driver
driver
=
com.mysql.cj.jdbc.Driver
url
=
jdbc:mysql://localhost:3306/test?seUnicode=true&characterEncoding=utf8&useSSL=false
username
=
root
password
=
root
\ No newline at end of file
万建斌_Mybatis1/src/main/resource/mybatis-config.xml
0 → 100644
View file @
e3314dec
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 根标签 -->
<configuration>
<properties
resource=
"db.properties"
></properties>
<typeHandlers>
<typeHandler
handler=
"com.cesgroup.mybatiswork.handle.MyTypeHandle"
></typeHandler>
</typeHandlers>
<!-- 环境,可以配置多个,default:指定采用哪个环境 -->
<environments
default=
"dev"
>
<!-- id:唯一标识 -->
<environment
id=
"dev"
>
<!-- 事务管理器,JDBC类型的事务管理器 -->
<transactionManager
type=
"JDBC"
/>
<!-- 数据源,池类型的数据源 -->
<dataSource
type=
"POOLED"
>
<property
name=
"driver"
value=
"${driver}"
/>
<!-- 配置了properties,所以可以直接引用 -->
<property
name=
"url"
value=
"${url}"
/>
<property
name=
"username"
value=
"${username}"
/>
<property
name=
"password"
value=
"${password}"
/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper
resource=
"MyMapper.xml"
/>
</mappers>
</configuration>
\ No newline at end of file
万建斌_Mybatis1/src/main/resource/mybatis.sql
0 → 100644
View file @
e3314dec
/*
/*
Navicat Premium Data Transfer
Source Server : 本机
Source Server Type : MySQL
Source Server Version : 80015
Source Host : localhost:3306
Source Schema : test
Target Server Type : MySQL
Target Server Version : 80015
File Encoding : 65001
Date: 09/12/2019 10:25:06
*/
SET
NAMES
utf8mb4
;
SET
FOREIGN_KEY_CHECKS
=
0
;
-- ----------------------------
-- Table structure for mybatis
-- ----------------------------
DROP
TABLE
IF
EXISTS
`mybatis`
;
CREATE
TABLE
`mybatis`
(
`id`
int
(
32
)
NOT
NULL
,
`name`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NULL
DEFAULT
NULL
,
`info`
varchar
(
1000
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_0900_ai_ci
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
CHARACTER
SET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
ROW_FORMAT
=
Dynamic
;
SET
FOREIGN_KEY_CHECKS
=
1
;
万建斌_Mybatis1/src/test/java/com/cesgroup/mybatiswork/AppTest.java
0 → 100644
View file @
e3314dec
package
com
.
cesgroup
.
mybatiswork
;
package
com
.
cesgroup
.
mybatiswork
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.ibatis.io.Resources
;
import
org.apache.ibatis.session.ExecutorType
;
import
org.apache.ibatis.session.SqlSession
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.apache.ibatis.session.SqlSessionFactoryBuilder
;
import
org.junit.Before
;
import
org.junit.Test
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cesgroup.mybatiswork.entity.User
;
/**
* @author chuwanshun
*
*/
public
class
AppTest
{
private
SqlSession
sqlSession
=
null
;
private
SqlSessionFactory
sqlSessionFactory
;
@Before
public
void
configMybatis
()
{
// 指定全局配置文件
String
resource
=
"mybatis-config.xml"
;
// 读取配置文件
InputStream
inputStream
;
try
{
inputStream
=
Resources
.
getResourceAsStream
(
resource
);
// 构建sqlSessionFactory
sqlSessionFactory
=
new
SqlSessionFactoryBuilder
().
build
(
inputStream
);
// 获取sqlSession
// sqlSession= sqlSessionFactory.openSession(ExecutorType.BATCH,false);
sqlSession
=
sqlSessionFactory
.
openSession
(
false
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
sqlSession
!=
null
)
{
//sqlSession.close();
}
}
}
/**
*
* 自定义解析器查询测试
*
* json串字段为 info
*/
@Test
public
void
testSelectUser
()
{
User
user
=
sqlSession
.
selectOne
(
"MyMapper.selectUser"
,
2
);
System
.
out
.
println
(
user
);
sqlSession
.
close
();
}
/**
*
* 自定义类型解析器插入测试
*/
@Test
public
void
testInsertJsonObject
()
{
JSONObject
userInfObject
=
new
JSONObject
();
userInfObject
.
put
(
"address"
,
"上海市静安区"
);
userInfObject
.
put
(
"telphone"
,
"13823541230"
);
User
user
=
new
User
();
user
.
setId
(
3
);
user
.
setName
(
"万建斌"
);
user
.
setInfo
(
userInfObject
);
int
a
=
sqlSession
.
insert
(
"MyMapper.insert"
,
user
);
sqlSession
.
commit
();
System
.
out
.
println
(
"影响的行数:"
+
a
);
}
/**
* 批量插入方法一(经测试该方法较快)
* 通过list方式批量插入
* 500条 378ms
* 5000条615ms
* 10000条897ms
*/
@Test
public
void
testInsertBatch
()
{
long
start
=
System
.
currentTimeMillis
();
List
<
User
>
list
=
new
ArrayList
<>();
for
(
int
i
=
1
;
i
<
10000
;
i
++)
{
JSONObject
userInfObject
=
new
JSONObject
();
userInfObject
.
put
(
"address"
,
"上海市静安区"
);
userInfObject
.
put
(
"telphone"
,
"13823541230"
);
User
user
=
new
User
();
user
.
setId
(
i
);
user
.
setName
(
"万建斌"
+
i
);
user
.
setInfo
(
userInfObject
);
list
.
add
(
user
);
}
int
a
=
sqlSession
.
insert
(
"MyMapper.insertBatch"
,
list
);
sqlSession
.
commit
();
long
end
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"---------------"
+
"批量插入耗时一:"
+(
end
-
start
)
+
"---------------"
);
}
/**
* 批量插入方法二
* 通过改变executor类型
*
* 500条 约375ms
* 5000条约912ms
* 10000条 1527ms
*/
@Test
public
void
testInsertBatchTwo
()
{
sqlSession
=
sqlSessionFactory
.
openSession
(
ExecutorType
.
BATCH
,
false
);
long
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
1
;
i
<
10000
;
i
++)
{
JSONObject
userInfObject
=
new
JSONObject
();
userInfObject
.
put
(
"address"
,
"上海市静安区"
);
userInfObject
.
put
(
"telphone"
,
"13823541230"
);
User
user
=
new
User
();
user
.
setId
(
i
);
user
.
setName
(
"万建斌"
+
i
);
user
.
setInfo
(
userInfObject
);
int
a
=
sqlSession
.
insert
(
"MyMapper.insert"
,
user
);
}
sqlSession
.
commit
();
long
end
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"---------------"
+
"批量插入耗时二:"
+(
end
-
start
)
+
"---------------"
);
}
}
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