Skip to content

Commit 1785396

Browse files
committed
mybatis
1 parent 2bd299f commit 1785396

6 files changed

Lines changed: 127 additions & 8 deletions

File tree

mybatis-test/pom.xml

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,64 @@
3333
<version>8.0.16</version>
3434
</dependency>
3535

36-
</dependencies>
36+
<dependency>
37+
<groupId>org.mybatis.generator</groupId>
38+
<artifactId>mybatis-generator-core</artifactId>
39+
<version>1.3.7</version>
40+
</dependency>
3741

42+
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
43+
<dependency>
44+
<groupId>com.github.pagehelper</groupId>
45+
<artifactId>pagehelper</artifactId>
46+
<version>5.2.0</version>
47+
</dependency>
48+
<dependency>
49+
<groupId>com.alibaba</groupId>
50+
<artifactId>fastjson</artifactId>
51+
<version>1.2.78</version>
52+
</dependency>
53+
54+
</dependencies>
55+
<!-- 控制Maven在构建过程中相关配置 -->
56+
<build>
57+
<!-- 构建过程中用到的插件 -->
58+
<plugins>
59+
<!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
60+
<plugin>
61+
<groupId>org.mybatis.generator</groupId>
62+
<artifactId>mybatis-generator-maven-plugin</artifactId>
63+
<version>1.3.7</version>
64+
<!-- 插件的依赖 -->
65+
<dependencies>
66+
<!-- 逆向工程的核心依赖 -->
67+
<dependency>
68+
<groupId>org.mybatis.generator</groupId>
69+
<artifactId>mybatis-generator-core</artifactId>
70+
<version>1.3.7</version>
71+
</dependency>
72+
<!-- 数据库连接池 -->
73+
<dependency>
74+
<groupId>com.mchange</groupId>
75+
<artifactId>c3p0</artifactId>
76+
<version>0.9.2</version>
77+
</dependency>
78+
<!-- MySQL驱动 -->
79+
<dependency>
80+
<groupId>mysql</groupId>
81+
<artifactId>mysql-connector-java</artifactId>
82+
<version>8.0.16</version>
83+
</dependency>
84+
</dependencies>
85+
</plugin>
86+
<plugin>
87+
<groupId>org.apache.maven.plugins</groupId>
88+
<artifactId>maven-compiler-plugin</artifactId>
89+
<configuration>
90+
<source>8</source>
91+
<target>8</target>
92+
</configuration>
93+
</plugin>
94+
</plugins>
95+
</build>
3896
</project>

mybatis-test/src/main/java/org/demo/mapper/EmployeeMapper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.apache.ibatis.annotations.Options;
44
import org.apache.ibatis.annotations.Param;
55
import org.apache.ibatis.annotations.Select;
6+
import org.apache.ibatis.cursor.Cursor;
67
import org.demo.po.Employee;
78

89
import java.util.List;
@@ -25,4 +26,13 @@ public interface EmployeeMapper {
2526
@Select("select * from employee where id = #{id}")
2627
@Options
2728
Employee getEmpById(@Param("id") Integer id);
29+
30+
// MySQL 默认情况下,创建 prepareStatement 时,就已经是 ResultSet.TYPE_FORWARD_ONLY 和 ResultSet.CONCUR_READ_ONLY ,所以这两个参数可加可不加
31+
// @Select("select * from employee")
32+
// @Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = Integer.MIN_VALUE)
33+
// @ResultType(Employee.class)
34+
// void getEmpList(ResultHandler<Employee> resultHandler);
35+
36+
@Select("select * from employee limit #{limit}")
37+
Cursor<Employee> scan(@Param("limit") int limit);
2838
}

mybatis-test/src/main/java/org/demo/test/MybatisTest.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package org.demo.test;
22

3+
import org.apache.ibatis.cursor.Cursor;
34
import org.apache.ibatis.io.Resources;
45
import org.apache.ibatis.session.SqlSession;
56
import org.apache.ibatis.session.SqlSessionFactory;
67
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7-
import org.demo.mapper.DynamicSQLMapper;
8+
import org.demo.mapper.EmployeeMapper;
89
import org.demo.po.Employee;
910

1011
import java.io.IOException;
1112
import java.io.InputStream;
12-
import java.util.List;
13+
import java.util.concurrent.atomic.AtomicInteger;
1314

1415
/**
1516
* @author Shawn
@@ -27,12 +28,15 @@ public static void main(String[] args) throws IOException {
2728
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
2829
// 获取sqlSession对象
2930
SqlSession sqlSession = sqlSessionFactory.openSession();
30-
DynamicSQLMapper mapper = sqlSession.getMapper(DynamicSQLMapper.class);
31+
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
3132
// 执行数据库操作
32-
Employee employee = new Employee();
33-
employee.setId(1);
34-
List<Employee> list = mapper.selectEmployeeBySql();
35-
System.out.println(list);
33+
AtomicInteger num = new AtomicInteger();
34+
try(Cursor<Employee> cursor = mapper.scan(4)) {
35+
cursor.forEach(e->{
36+
System.out.println(e);
37+
});
38+
}
39+
// System.out.println(empList);
3640
// List<Employee> list = mapper.getEmp1();
3741
// Department department1 = mapper.getDeptStep(1);
3842
// List<Employee> list = mapper.getEmp1();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE generatorConfiguration
3+
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
4+
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
5+
<generatorConfiguration>
6+
<!--
7+
targetRuntime: 执行生成的逆向工程的版本
8+
MyBatis3Simple: 生成基本的CRUD(清新简洁版)
9+
MyBatis3: 生成带条件的CRUD(奢华尊享版)
10+
-->
11+
<context id="DB2Tables" targetRuntime="MyBatis3Simple">
12+
<!-- 数据库的连接信息 -->
13+
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
14+
connectionURL="jdbc:mysql://localhost:3306/learnmybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai"
15+
userId="root"
16+
password="root">
17+
</jdbcConnection>
18+
<!-- javaBean的生成策略-->
19+
<javaModelGenerator targetPackage="org.demo.pojo" targetProject=".\src\main\java">
20+
<property name="enableSubPackages" value="true" />
21+
<property name="trimStrings" value="true" />
22+
</javaModelGenerator>
23+
<!-- SQL映射文件的生成策略 -->
24+
<sqlMapGenerator targetPackage="mappers"
25+
targetProject=".\src\main\resources">
26+
<property name="enableSubPackages" value="true" />
27+
</sqlMapGenerator>
28+
<!-- Mapper接口的生成策略 -->
29+
<javaClientGenerator type="XMLMAPPER"
30+
targetPackage="org.demo.mapper" targetProject=".\src\main\java">
31+
<property name="enableSubPackages" value="true" />
32+
</javaClientGenerator>
33+
<!-- 逆向分析的表 -->
34+
<!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
35+
<!-- domainObjectName属性指定生成出来的实体类的类名 -->
36+
<table tableName="department" domainObjectName="Department"/>
37+
<table tableName="employee" domainObjectName="Employee"/>
38+
</context>
39+
</generatorConfiguration>

mybatis-test/src/main/resources/mappers/EmployeeMapper.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,11 @@
7575
select * from department where id = #{did}
7676
</select>
7777

78+
<!--FORWORD_ONLY 结果集的游标只能向下滚动-->
79+
<!--SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变-->
80+
<!--SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变-->
81+
<!--fetchSize MySQL驱动需要这个数字来明确开启流处理方式-->
82+
<select id="getEmpList" resultType="Employee" resultSetType="FORWARD_ONLY" fetchSize="-2147483648">
83+
select * from employee
84+
</select>
7885
</mapper>

mybatis-test/src/main/resources/mybatis-config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
</typeAliases>
1919

2020
<plugins>
21+
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
2122
<plugin interceptor="org.demo.plugin.ExamplePlugin">
2223
<property name="number" value="1"/>
2324
</plugin>

0 commit comments

Comments
 (0)