diff --git a/FAQ_CN.md b/FAQ_CN.md
new file mode 100644
index 0000000000000000000000000000000000000000..64e6704940a160f0dbb6248bf17e17e953e008a2
--- /dev/null
+++ b/FAQ_CN.md
@@ -0,0 +1,643 @@
+Bee常见疑问收集:
+
+1.
+
+Q: Bee支持几种数据库?
+
+A: MySQL,MariaDB,Oracle,SQL Server,H2,SQLite,PostgreSQL等等都是支持的,只要该DB支持JDBC,Bee就可以轻松支持它!
+
+2.
+
+Q: 表与实体Javabean可以自动映射吗?
+
+A: Bee采用约定优于配置的方式,默认实现有三种方式, 且支持自定义映射规则扩展.
+在bee.properties作相关配置即可切换默认实现方式.
+
+```properties
+#since 1.7.2
+#default implement translate type. 1 : order_no<-->orderNo(DB<-->Java), 2: ORDER_NO<-->orderNo(DB<-->Java), 3: original
+#if want to use other naming rule, you can define a new class implements NameTranslate
+#default value is :1
+bee.osql.naming.translateType=1
+```
+一般情况下,字段命名转换,MySQL设置为1, Oracle设置为2.
+
+3.
+
+Q: Bee支持读写分离,支持多数据源吗?
+
+A: V1.8支持读写分离一主多从, 仅分库等多数据源模式。
+分布式环境下生成连续单调递增(在一个workerid内),全局唯一数字id。
+
+4.
+
+
+Q: 在一个DB中,随着数据量不断增长,需要将老的数据移到历史表中. 如,订单表orders,将5月,6月数据移到 orders\_202005,orders\_202006,结构与表orders一样。 如何用同一Javabean,同时映射多个数据表?
+
+A: V1.8支持同库分表,动态表名映射.
+
+参考: [https://gitee.com/automvc/bee/issues/I1P8YH](https://gitee.com/automvc/bee/issues/I1P8YH)
+
+或: [https://github.com/automvc/bee/issues/18](https://github.com/automvc/bee/issues/18)
+
+5.
+
+Q: Bee有说明文档吗?有测试用例吗?这么好用的orm竟然没文档??!!!
+
+A: 请参考Bee源码网站wiki,或: JavaWeb开发的利器 系统文章,请关注微信公众号: 软件设计活跃区. 测试用例,请查看:[https://gitee.com/automvc/bee-exam](https://gitee.com/automvc/bee-exam)
+
+6.
+
+
+Q: 请教下bee的多对多映射是类似mybatis那种可以全部查出来然后映射,还是hibernate那种多次查询?
+
+A: bee更接近原生SQL,可用原生语句分页,不需要全部查出来,也不需要查多次 wiki相关文档: (四): 分页、查询部分字段原来如此简单 (六): 多表查询(面向对象方式)
+
+7.
+
+
+Q: Bee怎么具有AI特性?
+
+A: 通过从手工写sql语句直接用JDBC操作数据库,到简单的DB工具类, 再到像Hibernate的旧版本通过操作对象将操作DB封闭到Dao; 再到后来写dao都觉得累赘,通用操作只写个空接口。 ORM工具的发展,就是一步步提炼,简化操作的历史。 假如用AI学习,演变,那写空接口都会觉得是多余的, 每个数据库表不就是表名,以及包含一些列而矣吗??!!! 为什么不能用同样的方式去处理呢??!!! 而且dao层可以直接去掉放到ORM框架统一处理。 为了实现这些目标,就有了Bee框架。 原来编码复杂度是O(n)的,现在变成是O(1),无论多少个表,你都可以不用另外再写dao代码。 可以用时间复杂度和空间复杂度体会下编码复杂度这种变化。
+
+8.
+
+
+Q: 分布式ORM正在解决的问题之一: 能不能找到一种,既不依赖DB,也不依赖时间的ID生成算法呢? DB表自增ID真的不能用在分布式场景吗?
+
+A: 都是可以的.参考Bee的org.teasoft.bee.distribution.GenId接口的三种实现.
+
+9.
+
+
+Q: 与传统ORM工具的比较?
+
+A: Hibernate的概念太复杂,学习成本高,更新会先查询再更新,n+1问题。Mybatis即使进行单表的Suid操作也需要人工写sql或生成sql文件,需要维护的sql太多。 更多比较,参考: [https://blog.csdn.net/abckingaa/article/details/84557336](https://blog.csdn.net/abckingaa/article/details/84557336)
+
+10.
+
+
+Q: Bee如何提高Java web软件开发效率?
+自动生成Javabean实例,自动生成Controller类实例
+
+A: 除了可以不需要写dao代码外(编码复杂度为O(1)),还提供了表对应的实体Javabean自动生成工具, 根据模板自动生成Java web前后端代码;人性化的SQL日志,可输出直接运行的sql语句(有占位符的SQL不能直接运行,不方便调试).
+bee-exam工程,org.teasoft.exam.bee.osql.autogen包下:
+GenBeanExam.java Javabean生成实例
+GenFilesExam.java SpringMVC Rest Controller生成实例
+
+11.
+
+
+Q: Bee支持缓存吗? 如何设置缓存?
+
+A: 支持。还可以像调优JVM一样,对一级缓存进行调优。有暂时缓存,也有永久缓存,还有可以同步更新的永久缓存。
+
+```properties
+#cache=======================start
+#缓存类型
+#bee.osql.cache.type=FIFO
+#缓存集数据量数目
+bee.osql.cache.mapSize=10
+#resultset超过一定的值将不会放缓存
+bee.osql.cache.workResultSetSize=300
+#缓存保存时间(毫秒 ms)
+bee.osql.cache.timeout=3000
+#检测到超时,超过这个使用比例则顺便起线程清除缓存
+bee.osql.cache.startDeleteRate=0.6
+#缓存容量使用率;添加缓存,检测达到该使用率则清除一定比例缓存
+bee.osql.cache.fullUsedRate=0.8
+#添加缓存,检测到缓存容量快满时,删除缓存数的比例
+bee.osql.cache.fullClearRate=0.2
+
+#仅分库时(bee.dosql.multiDS.type=2),可用格式: dsName.tableName
+#use table name, not entity name
+#不缓存表的列表, 表名不区分大小写.视图强烈建议不放缓存,因会产生脏数据.
+#bee.osql.cache.never=user
+#永久缓存表的列表, 表名不区分大小写
+#bee.osql.cache.forever=constant
+#只有更改时才会清除缓存,以便同步新的值到缓存. 表名不区分大小写
+#bee.osql.cache.modifySyn=para
+
+# since v1.7.2. default value is: false (use cache)
+#bee.osql.cache.nocache=false
+
+#since 1.8.99
+bee.osql.cache.keyUseMD5=true
+#cache=======================end
+```
+
+12.
+
+
+Q: Bee设计原理?
+
+A: 参考wiki或公众号相关文章: (十一):如何设计ORM架构及Bee源码分析 (十二):为什么需要一个新的ORM框架
+
+13 (1).Q: Bee查询怎么写筛选条件(不是等号=的情况)呢?像筛选状态大于2的 ? 还有 update高级用法
+
+A: 写法类似: Condition condition=new ConditionImpl(); condition .op("status", Op.gt, 2) // 会转化到SQL中的where status>2 详情参考wiki: (五): 复杂查询(面向对象方式) (十三):update高级用法说明
+ **更新的字段是在原来的基础上变化**
+如某类商品提价2元,可以有如下写法。
+set price=price+2
+ **这样写的好处,可以不需要查询出原来的价格,减少IO开销。**
+Bee的面向对象写法:
+condition.setAdd("price", 2);
+suidRich.update(entity,condition);
+
+若字段p每次增加的值由字段step配置,则写为:
+condition.setAdd("p", "step");
+会转化为: set p=p+step
+
+13 (2). Q: SuidRich接口,update方法,如何区分SQL的set部分和where部分? 即哪些字段会用在set设置部分,哪些字段会用在where条件过虑部分?
+
+A: 当更新一个实体,是根据id来唯一关联一个实体时,用Suid接口的update(T entity)方法即可,该方法以id作为where条件,其它非null,非空字段转为要更新的值.
+默认转换的如改价格, set price=22; 但要是比原价提高2,set price=price+2,此时不能通过将值放在实体进行默认转换,需要借助Condition,用:condition.setAdd("price", 2);
+若用id可以唯一关联一个实体,可用:
+updateById(T entity,Condition condition);
+ * SQL UPDATE语句包括两大部分SET和WHERE,SuidRich采取指定其中一样,另一样尽量采用默认的实现方式.所以有关更新的方法分为两部分:
+ *
update和updateBy.
+ *
update方法中,String updateFields参数(若有),可以指明要更新的字段,其余字段则有可能转为SQL UPDATE语句的WHERE部分(默认过
+ *
滤NULL和空字符串,可通过IncludeType显示设置).
+ *
updateBy方法中,String whereFields(若有),可以指明用于SQL中WHERE的字段.当指定了whereFields, 没在whereFields的字段,将默认
+ *
转换为SQL UPDATE语句的SET部分(默认过滤NULL和空字符串,可通过IncludeType显示设置).
+ *
同一个实体的某个属性的值,若用于WHERE部分了,再用于UPDATE SET部分就没有意义(因为此时它们的值是一样的),但可以用Condition的
+ *
set(String fieldName, Number num)等方法设置;Condition的方法set,setMultiply,setAdd,setWithField,是在处理WHERE字段前
+ *
已完成处理的,所以不受指定的WHERE条件字段的影响.
+ *
+ *
update和updateBy方法的Condition设置的字段都会被解析,不受IncludeType的限制,也不受updateFields参数和whereFields参数的影响.
+
+14.Q: Bee与Honey是什么关系?
+
+A: ORM Bee框架是采用接口与实现分离的设计方式.Bee是接口,而Honey则是Bee的实现.
+
+14-2. Q: Bee开源的代码都是接口定义吗 没有实现吗?
+
+A: 接口与实现分离. 使用API可只关注接口.
+Bee是接口, Honey是实现, Bee-ext是涉及第三方的扩展实现(可能会用到)
+
+15.
+
+Q: Bee非常易用,编写代码少,但使用是一方面, 它的性能如何?
+
+A: 性能绝对是过得去的,接近JDBC的性能.README给出了详细的表格比较数据. 详细比较还开启了一个项目,欢迎PK。
+https://gitee.com/automvc/orm-compare
+
+16.
+
+Q: Bee适合手机开发领域吗?
+
+A: Bee文件小。bee V1.8 jar files 仅217k. 而且性能也接近JDBC的性能.还专门对H2,SQLite作了优化.
+
+17.
+
+
+Q: 如何自动填日期字段?
+
+A: Bee默认不解析是null或空的字段;
+当Javabean的日期是null时,Bee不会解析. 像mysql可以在DB端自动触发填充日期值。
+另外,V1.11增加了相关注解:Datetime,Createtime,Updatetime;
+
+18.
+
+Q: Bee对Excel导入有什么支持? 有简化操作吗?
+
+A: 轻松用ORM Bee实现将Excel的数据转成List,并导入到数据库。
+读取最简单的就一行代码: List list = ExcelReader.readExcel("D:\\test-dataType.xlsx");
+参考bee-exam项目里:
+ExcelReaderTest.java
+ImportExcelTest.java
+八行代码搞定将excel数据导入到DB
+https://blog.csdn.net/abckingaa/article/details/113603130
+或:
+https://my.oschina.net/u/4111850/blog/4944468
+
+19.
+
+Q: 没有与表对应的实体Javabean,如何操作数据?
+A: 用map进行转换实体信息,查询/删除数据库中的数据.
+参考bee-exam项目里:
+MapSuidExam
+
+```java
+ MapSuid mapSuid = BeeFactoryHelper.getMapSuid();
+ MapSql mapSql = BeeFactoryHelper.getMapSql();
+
+ mapSql.put(MapSqlKey.Table, "test_user");
+// mapSql.put(MapSqlKey.Table, "testUser");
+ mapSql.put(MapSqlKey.SelectColumns, "name,password");
+ mapSql.put(MapSqlKey.OrderBy, "name");
+
+ mapSql.put(MapSqlSetting.IsNamingTransfer, true);
+// mapSql.put(MapSqlSetting.IsIncludeEmptyString, true);
+ mapSql.put(MapSqlSetting.IsIncludeNull, true);
+
+ mapSql.put("name", "Bee");
+ mapSql.put("email", ""); //emptyString
+ mapSql.put("lastName", null);
+// mapSql.put("last_name", null);
+
+ String json = mapSuid.selectJson(mapSql);
+ Logger.info(json);
+// mapSuid.selectJson(mapSql); //test cache
+
+ mapSuid.select(mapSql);
+ mapSuid.select(mapSql);
+
+ Map map = mapSuid.selectOne(mapSql);
+ if (ObjectUtils.isNotEmpty(map)) {
+ Logger.info(map.get("name").toString());
+ Logger.info(map.get("password").toString());
+ }
+ mapSuid.selectOne(mapSql);
+```
+
+20.
+
+Q:表对应的实体Javabean有些字段不想解析,如何实现?
+A:
+Ignore注解,忽略Javabean字段,不进行转换.
+但这种应尽量少用. 纯的Javabean,当DB有变动时,很容易就可以更改了,自动生成纯Javabean更方便,安全.
+Bee默认是不处理为null或空字符的字段的,因此,操作DB前将其置空即可.
+
+21.
+How to use ORM Bee develop when the sql like: select examno, subject,max(score) ,avg(score) ,min(score) from scores?
+Detail see wiki:
+More SQL Function, more Group by
+
+```java
+ Condition condition=new ConditionImpl();
+
+ condition
+ .selectField("classno,term,examno,subject")
+ .selectFun(FunctionType.MAX, "score","maxScore")
+ .selectFun(FunctionType.AVG, "score","avgScore")
+ .selectFun(FunctionType.MIN, "score","minScore");
+
+ condition.op("status", Op.nq, "FIN");
+
+ condition
+ .groupBy("term,examno,subjectno,subject")
+ .orderBy("classno,term,examno,subjectno")
+ ;
+
+ Scores scores=new Scores();
+ String r=suidRich.selectJson(scores, condition); // json result
+ System.out.println(r);
+
+ List listString=suidRich.selectString(scores, condition); // string array result
+ String str[];
+ for (int i = 0; i < listString.size(); i++) {
+ str=listString.get(i);
+ for (int j = 0; j < str.length; j++) {
+ System.out.print(str[j]+" ");
+ }
+ System.out.println();
+ }
+```
+
+V1.11可以在Javabean字段上使用JustFetch,表示只是用于获取数据.具体参考JustFetch用法。
+
+22.
+
+Q: Bee为什么没有findAll(),deleteAll()方法?
+A: 在一个系统里,几乎是不会有删除整个表的应用场景的。即使写demo样例也很少。所在Bee还特意加了一个检测开关,
+ 以防止误删整个表的数据。 要是软删除(只标记一个字段状态表示不用该数据了),那直接用update就好了。
+ findAll()应用的场景也很有限,除了配置表,只存储少量记录,会查询所有数据;像用户表,订单表等是不可能查询所有数据的,
+ 一般都是要分页(另外,Bee的分页功能比其它工具的都好用,性能也高)。在Bee,查询所有数据,类似用法如下:
+ suid.select(new ConstValue());//查询所有常量,假设表名对应的实体名为:ConstValue
+
+
+23.
+
+Q: Bee为什么没有save方法?
+A: 别的ORM框架,将insert与update合为一个save方法,每次操作前都要查询一次数据,看数据库是否存在该记录,
+ 以确定是要用insert还是update. 更新操作时,entity要设置id值,以便让查询确定该实体是否存在。
+ 相当于更新操作,只能以id为where 条件,一次只能更新一条(有更新多条的需要时,这种做法效率不会高)。
+ 当使用mysql数据库且JPA主键策略为@GeneratedValue(strategy = GenerationType.IDENTITY),全局更新未带version数据时,
+ 更新操作会变为保存操作。
+ 但在很多业务场景,insert与update是明确可以区分开的,特别是在互联网应用。
+ 要是用save反而会降低系统的性能。
+
+ **V1.9.8** , SuidRich有提供save方法。
+ 如果可以区分开,建议明确调用insert(entity)或者update(entity),这样更加安全和高效。
+
+24.
+
+Q: Bee为什么不需要写mapper,dao?
+A: 这是Bee的一大优势,Bee的编码复杂度是O(1). Bee概念简单,易于使用,编码量少。
+ Bee通过约定优于配置原则,通过封装,已经简化了开发.
+ 可以更简单,省时省力,即可提高开发效率,又可节约开发成本,何乐而不为呢!
+
+25.
+
+Q: Bee一对多查询?
+A: Bee一对多查询不需要List. 呈现方式,像我们用DB客户端查询数据,结果是一个二维表. Bee是将这个二维表的每一行封装
+在一个主对象里,每个主对象会有一个从对象保存从表的数据.
+详细例子可参考:
+ https://gitee.com/automvc/bee/wikis/(%E5%85%AD):%20%E5%A4%9A%E8%A1%A8%E6%9F%A5%E8%AF%A2(%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%96%B9%E5%BC%8F)?sort_id=2309685
+
+26.
+
+Q: 多表关联时,一对多查询,字段类型用List?
+
+A: 当为了前端显示方便等原因,需要将从表数据作为主表的list属性时,可以用该功能.
+ V1.9.8有该功能支持,参考例子:
+https://gitee.com/automvc/bee-exam/blob/master/src/main/java/org/teasoft/exam/bee/osql/ListEntityTest.java
+
+27.
+
+Q: 联合主键如何查询或更新记录?
+A: Bee通过约定优于配置原则,约定主键名称是id,这样可以使问题变量简单,处理的效率也更高.
+ 对于一些老的系统,有联合主键的,当作一般查询处理即可,即有两个字段作为主键,要用联合主键时,设置两个属性的值,框架就会负责解析(Suid的update方法,SuidRich的selectById等方法默认是id主键则不适用).
+ V1.11 可以使用PrimaryKey注解.
+
+28.
+
+Q: 表主键名称不是id或id类型是String类型,如何处理?
+A: Suid的update方法,SuidRich的selectById等方法默认是将id为会字段用于where条件,以便确认要修改的记录.
+没有id字段,则指定作为where的字段即可.如: suidRich.updateBy(noid, "uuid"); //noid为实体对象,"uuid"字段作为过滤的字段.
+以下为详细例子.
+
+ ```java
+ //Noid总共有以下4个字段.
+// private String uuid;
+// private String name;
+// private Integer num;
+// private String remark;
+
+ public static void testNoId() {
+ Noid noid=new Noid();
+ noid.setUuid("aaaaaa-no-id");
+ noid.setName("test no id");
+ suid.insert(noid);
+
+ List list=suid.select(noid);
+ Printer.printList(list);
+
+ noid.setUuid("aaaaaa-no-id");
+ noid.setName("new name3");
+// suid.update(noid); //默认id作为where条件里的表达式,用于确定需要更新的记录
+ suidRich.updateBy(noid, "uuid"); //没有id字段,则指定作为where的字段即可.
+
+ List list2=suid.select(noid);
+ Printer.printList(list2);
+ }
+ ```
+
+29.
+
+Q: 表名与实体名、字段名与属性名映射默认提供多种实现,且支持自定义映射规则扩展。 请问这个是怎么设置的,谢谢。
+ How to set customized NameTranslate?
+A: 实现NameTranslate接口, 并在NameTranslateHandle类设置setNameTranslat(NameTranslate nameTranslat)
+ 当前对象设置,参考第41.
+
+30.
+
+Q: 多表关联时,如何在SQL on部分加表达式,过滤数据?
+
+A: 使用Condition接口的opOn方法.
+ public Condition opOn(String field, Op Op, Object value);
+
+31.
+
+Q: 请问下Bee中批量更新是怎么处理的呢
+A: update 不像insert 有批量的接口。 因为用同一条语句可以更新多条记录.
+如 update table_name set field1='abc' where field2='aa' and field3='bb',
+符合where条件的记录都将被更新.
+这种只用一条语句就可以更新多条记录,用SuidRich接口相关的update方法就好.
+要是确实要多个update,可以自己写一个循环, 然后用同一个connection连接,提高效率.
+beginSameConnection();
+//多个update语句
+endSameConnection();
+
+32.
+
+Q: 在where条件里如何使用or
+
+A: 例子如下:
+
+ ```java
+ condition
+ .lParentheses() // (
+ .op("classno", Op.eq, "201")
+ .or()
+ .op("classno", Op.eq, "202")
+ .rParentheses() // )
+ ;
+ ```
+
+ 会转化成: (classno="201" or classno="202")
+
+
+33.
+
+Q: Bee多表关联查询, 用List和不用List的区别
+
+A: 参考:https://blog.csdn.net/abckingaa/article/details/119859192
+
+@JoinTable(mainField="table_id", subField="table_id",subClass="Columns", joinType=JoinType.JOIN)
+ private Columns columns;
+// private List list;
+
+//注解里subClass属性,当两个实体在同一个包,包名,是可以省略的.
+
+
+34.
+
+Q: Java ORM框架Bee如何使用事务
+
+A: //单笔操作,默认自动提交事务
+
+多笔操作要在一次事务提交,可使用:
+
+ ```java
+ try {
+
+ Transaction transaction=SessionFactory.getTransaction();
+ transaction.begin(); //事务开始
+
+ //......放多个操作在这
+
+ transaction.commit();//提交事务,事务结束
+
+ } catch (BeeException e) {
+ Logger.error(e.getMessage());
+ transaction.rollback();
+ }
+ ```
+
+具体例子如下:
+
+ ```java
+Transaction transaction=SessionFactory.getTransaction();
+ try {
+
+ transaction.begin();
+
+ Suid suid = BeeFactory.getHoneyFactory().getSuid();
+
+ User user=new User();
+ user.setUsername("testuser");
+ user.setPassword("bee-user");
+
+ suid.insert(user);//insert 1
+
+ Orders orders = new Orders();
+ orders.setUserid("bee");
+ orders.setName("Bee(ORM Framework)");
+ orders.setTotal(new BigDecimal("91.99"));
+ orders.setRemark("test transaction");
+ orders.setSequence("");//empty String test
+
+ suid.insert(orders); //insert 2
+
+ transaction.commit();
+
+ List list = suid.select(orders); //可任意组合条件查询
+ for (int i = 0; i < list.size(); i++) {
+ Logger.info(list.get(i).toString());
+ }
+
+ } catch (BeeException e) {
+ // e.printStackTrace();
+ Logger.error(e.getMessage());
+ transaction.rollback();
+ }
+ ```
+
+35.
+
+Q: Java ORM框架Bee分页实例
+
+A: 分页实例如下(结合springMVC):
+
+分页相关的,只需要传页码和一页的数据条数;返回就返回一页的数据.
+
+ ```java
+ @RequestMapping("/list")
+ public Result list(Orderhistory orderhistory,
+ @RequestParam(value = "page", defaultValue = "1", required = false) int page,
+ @RequestParam(value = "rows", defaultValue = "20", required = false) int rows) {
+ Result result =new Result();
+
+ int total = objSQLRichService.count(orderhistory); //可以用上缓存,提高效率
+ List list=objSQLRichService.select(orderhistory, (page-1)*rows, rows);
+ result.setRows(list);
+ result.setTotal(total);//返回的总数据条数,有些前端框架需要.
+
+ return result;
+ }
+ ```
+
+
+36.
+
+Q: 生成Javabean时,遇到Bee无法支持的类型,如何处理?
+
+A:
+private [UNKNOWN TYPE]TEXT testData;
+生成Javabean时,有[UNKNOWN TYPE], 则表示遇到了没能识别的类型.
+可以在相应文件里配置
+如:Oracle,
+在:
+jdbcTypeToFieldType-Oracle.properties
+文件里,配置:
+DATE=Timestamp
+可以将DATE指定转换为:Timestamp
+Honey工程下,预设了部分文件
+jdbcTypeToFieldType-Oracle.properties
+jdbcTypeToFieldType-H2.properties
+jdbcTypeToFieldType-MySQL.properties
+jdbcTypeToFieldType-PostgreSQL.properties
+jdbcTypeToFieldType-SQLite.properties
+jdbcTypeToFieldType-MariaDB.properties
+jdbcTypeToFieldType.properties
+等等..
+jdbcTypeToFieldType.properties是默认的,不需要指定数据库名称.
+规则是:
+#jdbcTypeToFieldType-{DbName}.properties,会覆盖
+jdbcTypeToFieldType.properties相同key的值
+可以只在jdbcTypeToFieldType.properties放配置.
+
+37.
+
+Q: 想问下如果我想查询某个字段值是空的记录该怎么调用suid呢?
+
+A: 例如,查email为空的用户信息.
+
+```java
+ Condition condition10=BeeFactoryHelper.getCondition();
+ condition10.op("email", Op.eq, null);
+ List list10 = suid.select(new TestUser(), condition10);
+
+```
+ //转成的sql为:
+
+```sql
+
+select id,email,last_name,name,password,username,createtime from test_user where email is null
+
+ ```
+
+ //where email is not null
+ 使用: condition11.op("email", Op.nq, null);
+
+```java
+condition11.op("email", Op.nq, null);
+//condition11.op("email", Op.notEqual, null); //或者用这个
+ ```
+
+38.
+
+Q: 在Maven工程,使用Bee,编程时没有提示javadoc API信息.如何设置才可以?
+ Bee为什么没有显示Java API信息
+
+A: 因为maven只下载了jar包,没有下载源码文件.
+在IDE里,下载即可.
+如Eclipse里, 工程右击, Maven-->Download Sources.
+可在本地maven仓库验证,是否多了一个文件:bee-1.9.8-sources.jar
+
+39.
+
+Q: PreparedSql 是否支持多数据源?
+
+A: PreparedSql的方法中带有泛型T的是支持多数据源的; 没带有泛型的,在多数据源场景,会操作默认数据源。
+
+40.
+
+Q: 自己定义了某种DB的方言,如DB2,如何设置到Bee?
+
+A: V1.11可以通过DbFeatureRegistry设置,简单易用。
+
+41.
+
+Q: 自己定义的命名转换器,如何设置 ?
+
+A: 全局NameTranslate设置,参考第29.
+ V1.11支持在Suid等对象使用setNameTranslate方法设置命名转换器。
+
+
+其它:
+
+Q: 多数据源如何配置(多数据源实例)?
+A: 相关用例可以查看,
+https://github.com/automvc/bee-exam
+或:
+https://gitee.com/automvc/bee-exam
+如:
+https://gitee.com/automvc/bee-exam/blob/master/src/main/java/org/teasoft/exam/bee/osql/ds/RwDsExam.java
+DiffDdExam.java
+
+若是用spring boot可参考:
+https://gitee.com/automvc/bee-starter-demo
+
+
+**其它相关资源:**
+
+gitee issue: [https://gitee.com/automvc/bee/issues?assignee\_id=&author\_id=&branch=&issue\_search=&label\_name=&milestone\_id=&program\_id=&scope=&sort=&state=closed](https://gitee.com/automvc/bee/issues?assignee_id=&author_id=&branch=&issue_search=&label_name=&milestone_id=&program_id=&scope=&sort=&state=closed)
+
+gitee wiki: [https://gitee.com/automvc/bee/wikis](https://gitee.com/automvc/bee/wikis)
+
+github issue: [https://github.com/automvc/bee/issues?q=is%3Aissue+is%3Aclosed](https://github.com/automvc/bee/issues?q=is%3Aissue+is%3Aclosed)
+
+github wiki: [https://github.com/automvc/bee/wiki](https://github.com/automvc/bee/wiki)
\ No newline at end of file
diff --git a/README.md b/README.md
index 15df8407ccc3c5048eb594db2c23159b70c1c344..a3fbfb01c7bbd9507f4b146ac9fbb5782bb76bd4 100644
--- a/README.md
+++ b/README.md
@@ -391,18 +391,18 @@ Quick Start:
org.teasoft
bee
- 1.11
+ 1.17
org.teasoft
honey
- 1.11
+ 1.17
-
+
org.teasoft
bee-ext
- 1.11
+ 1.17
```
@@ -641,8 +641,7 @@ App Demo:
Other Document:
=========
### API-DOC
-API-V1.9.8 SourceCode contain bee-1.9.8-javadoc.zip
-API-V1.11(Newest) SourceCode contain bee-1.11 CN & EN API,bee-1.11 CN SourceCode
+API-V1.17(Newest) SourceCode contain bee-1.17 CN & EN API,bee-1.17 CN SourceCode
[wiki Document](../../../bee/wikis)
diff --git a/README_CN.md b/README_CN.md
index b672116b8cda3978fe94a6a634359a6e67bc3158..ec03f8c6b201570302a1c9a2a6e92bd8520f5ba6 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -339,18 +339,18 @@ OrdersService.java
org.teasoft
bee
- 1.11
+ 1.17
org.teasoft
honey
- 1.11
+ 1.17
-
+
org.teasoft
bee-ext
- 1.11
+ 1.17
```
@@ -600,8 +600,7 @@ List list = suid.select(new Orders());
其它学习资料:
=========
### API-DOC
-API-V1.9.8 下载代码含有 bee-1.9.8-javadoc.zip
-API-V1.11(最新版) 下载代码含有 bee-1.11中文和英文版API,bee-1.11中文版源码
+API-V1.17(最新版) 下载代码含有 bee-1.17中文和英文版API,bee-1.17中文版源码
### 使用文档
[wiki 文档](../../../bee/wikis)