Skip to content

Commit 595355b

Browse files
committed
Merge branch 'master' of github.com:nutzam/nutz
2 parents 8f908d4 + 4425471 commit 595355b

File tree

6 files changed

+174
-4
lines changed

6 files changed

+174
-4
lines changed

README.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<p align="center"><a href="https://nutz.cn" target="_blank"><img width="100" src="https://github.com/nutzam/nutz/raw/master/doc/ci/logo.png"></a></p>
33

44
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.nutz/nutz/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.nutz/nutz/)
5-
[![GitHub release](https://img.shields.io/github/release/nutzam/nutz.svg)](https://github.com/nutzam/nutz/releases)
65
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
76

87
## 项目目标
@@ -40,7 +39,7 @@ Nutz遵循Apache协议,完全开源,文档齐全,永远免费(商用也是)
4039
<dependency>
4140
<groupId>org.nutz</groupId>
4241
<artifactId>nutz</artifactId>
43-
<version>1.r.68.v20190220</version>
42+
<version>1.r.69.v20220703</version>
4443
</dependency>
4544
```
4645

src/org/nutz/Nutz.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public final class Nutz {
3333
* @return nutz 项目的版本号
3434
*/
3535
public static String version() {
36-
return "1.r.69-SNAPSHOT";
36+
return "1.r.70-SNAPSHOT";
3737
}
3838

3939
/**

src/org/nutz/dao/DB.java

+4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ public enum DB {
5555
* DM
5656
*/
5757
DM,
58+
/**
59+
* DM_MYSQL
60+
*/
61+
DM_MYSQL,
5862
/**
5963
* TDengine
6064
*/

src/org/nutz/dao/DatabaseMeta.java

+2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public void setProductName(String productName) {
6161
type = DB.SYBASE;
6262
} else if (proName.contains("dm dbms")) {
6363
type = DB.DM;
64+
} else if (proName.contains("dm mysql")) {
65+
type = DB.DM_MYSQL;
6466
} else if (proName.contains("tdengine")) {
6567
type = DB.TDENGINE;
6668
} else {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
package org.nutz.dao.impl.jdbc.dm;
2+
3+
import org.nutz.dao.DB;
4+
import org.nutz.dao.Dao;
5+
import org.nutz.dao.Sqls;
6+
import org.nutz.dao.entity.Entity;
7+
import org.nutz.dao.entity.LinkField;
8+
import org.nutz.dao.entity.MappingField;
9+
import org.nutz.dao.entity.PkType;
10+
import org.nutz.dao.entity.annotation.ColType;
11+
import org.nutz.dao.impl.jdbc.AbstractJdbcExpert;
12+
import org.nutz.dao.jdbc.JdbcExpertConfigFile;
13+
import org.nutz.dao.pager.Pager;
14+
import org.nutz.dao.sql.Pojo;
15+
import org.nutz.dao.sql.Sql;
16+
import org.nutz.dao.util.Pojos;
17+
import org.nutz.log.Log;
18+
import org.nutz.log.Logs;
19+
20+
import java.util.List;
21+
22+
/**
23+
* @author wizzer.cn
24+
*/
25+
public class DmMysqlJdbcExpert extends AbstractJdbcExpert {
26+
27+
private static final Log log = Logs.get();
28+
29+
public DmMysqlJdbcExpert(JdbcExpertConfigFile conf) {
30+
super(conf);
31+
}
32+
33+
public String getDatabaseType() {
34+
return DB.DM_MYSQL.name();
35+
}
36+
37+
public void formatQuery(Pojo pojo) {
38+
Pager pager = pojo.getContext().getPager();
39+
// 需要进行分页
40+
if (null != pager && pager.getPageNumber() > 0)
41+
pojo.append(Pojos.Items.wrapf(" LIMIT %d, %d", pager.getOffset(), pager.getPageSize()));
42+
}
43+
44+
public void formatQuery(Sql sql) {
45+
Pager pager = sql.getContext().getPager();
46+
// 需要进行分页
47+
if (null != pager && pager.getPageNumber() > 0)
48+
sql.setSourceSql(sql.getSourceSql()
49+
+ String.format(" LIMIT %d, %d",
50+
pager.getOffset(),
51+
pager.getPageSize()));
52+
}
53+
54+
public String evalFieldType(MappingField mf) {
55+
if (mf.getCustomDbType() != null)
56+
return mf.getCustomDbType();
57+
if (mf.getColumnType() == ColType.INT) {
58+
int width = mf.getWidth();
59+
if (width <= 0) {
60+
return "INT";
61+
} else if (width <= 4) {
62+
return "TINYINT";
63+
} else if (width <= 6) {
64+
return "SMALLINT";
65+
} else if (width <= 10) {
66+
return "INT";
67+
}
68+
return "BIGINT";
69+
}
70+
if (mf.getColumnType() == ColType.BOOLEAN) {
71+
return "TINYINT";
72+
}
73+
// 其它的参照默认字段规则 ...
74+
return super.evalFieldType(mf);
75+
}
76+
77+
public boolean createEntity(Dao dao, Entity<?> en) {
78+
StringBuilder sb = new StringBuilder("CREATE TABLE " + en.getTableName() + "(");
79+
// 创建字段
80+
for (MappingField mf : en.getMappingFields()) {
81+
if (mf.isReadonly())
82+
continue;
83+
sb.append('\n').append(mf.getColumnNameInSql());
84+
sb.append(' ').append(evalFieldType(mf));
85+
// 非主键的 @Name,应该加入唯一性约束
86+
if (mf.isName() && en.getPkType() != PkType.NAME) {
87+
sb.append(" UNIQUE NOT NULL");
88+
}
89+
// 普通字段
90+
else {
91+
92+
if (mf.isNotNull()) {
93+
sb.append(" NOT NULL");
94+
} else if (mf.getColumnType() == ColType.TIMESTAMP) {
95+
sb.append(" NULL");
96+
}
97+
98+
if (mf.isAutoIncreasement())
99+
sb.append(" IDENTITY(1,1)");
100+
101+
if (mf.getColumnType() == ColType.TIMESTAMP) {
102+
if (mf.hasDefaultValue()) {
103+
sb.append(" ").append(getDefaultValue(mf));
104+
} else {
105+
if (mf.isNotNull()) {
106+
sb.append(" DEFAULT 0");
107+
} else {
108+
sb.append(" DEFAULT NULL");
109+
}
110+
}
111+
} else {
112+
if (mf.hasDefaultValue())
113+
addDefaultValue(sb, mf);
114+
}
115+
}
116+
117+
if (mf.hasColumnComment()) {
118+
sb.append(" COMMENT '").append(mf.getColumnComment()).append("'");
119+
}
120+
121+
sb.append(',');
122+
}
123+
// 创建主键
124+
List<MappingField> pks = en.getPks();
125+
if (!pks.isEmpty()) {
126+
sb.append('\n');
127+
sb.append("PRIMARY KEY (");
128+
for (MappingField pk : pks) {
129+
sb.append(pk.getColumnNameInSql()).append(',');
130+
}
131+
sb.setCharAt(sb.length() - 1, ')');
132+
sb.append("\n ");
133+
}
134+
135+
// 结束表字段设置
136+
sb.setCharAt(sb.length() - 1, ')');
137+
// 执行创建语句
138+
dao.execute(Sqls.create(sb.toString()));
139+
140+
// 创建索引
141+
dao.execute(createIndexs(en).toArray(new Sql[0]));
142+
143+
// 创建关联表
144+
createRelation(dao, en);
145+
146+
return true;
147+
}
148+
149+
protected String createResultSetMetaSql(Entity<?> en) {
150+
return "SELECT * FROM " + en.getViewName() + " LIMIT 1";
151+
}
152+
153+
public boolean canCommentWhenAddIndex() {
154+
return true;
155+
}
156+
157+
protected Sql createRelation(Dao dao, LinkField lf) {
158+
Sql sql = super.createRelation(dao, lf);
159+
if (sql == null)
160+
return null;
161+
StringBuilder sb = new StringBuilder(sql.getSourceSql());
162+
return Sqls.create(sb.toString());
163+
}
164+
}

src/org/nutz/dao/jdbc/nutz_jdbc_experts.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ var ioc = {
88
*/
99
experts : {
1010
"h2.*" : "org.nutz.dao.impl.jdbc.h2.H2JdbcExpert",
11+
"dm dbms.*" : "org.nutz.dao.impl.jdbc.dm.DmJdbcExpert",
12+
"dm mysql.*" : "org.nutz.dao.impl.jdbc.dm.DmMysqlJdbcExpert",
1113
"mysql.*" : "org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert",
1214
"mariadb.*" : "org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert",
1315
"postgresql.*" : "org.nutz.dao.impl.jdbc.psql.PsqlJdbcExpert",
@@ -22,7 +24,6 @@ var ioc = {
2224
".+derby.+" : "org.nutz.dao.impl.jdbc.derby.DerbyJdbcExpert",
2325
"gbase.*" : "org.nutz.dao.impl.jdbc.gbase.GBaseJdbcExpert",
2426
"sybase.*" : "org.nutz.dao.impl.jdbc.sybase.SybaseIQJdbcExpert",
25-
"dm dbms.*" : "org.nutz.dao.impl.jdbc.dm.DmJdbcExpert",
2627
"tdengine.*" : "org.nutz.dao.impl.jdbc.tdengine.TDengineJdbcExpert",
2728
"clickhouse.*" : "org.nutz.dao.impl.jdbc.clickhouse.ClickhouseJdbcExpert",
2829
"xugu.*" : "org.nutz.dao.impl.jdbc.xugu.XuguJdbcExpert"

0 commit comments

Comments
 (0)