package org.nutz.dao.entity.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 声明的一个 POJO 所对应的数据表名。 * * <h4>动态数据表名的支持</h4><br> * * 注解支持字符串模板的写法,在你希望放置动态表名变量的位置插入 ${变量名},比如: * * <pre> * @Table("t_tab_${cid}") * public class MyPojo{ * ... * </pre> * * 那么 ${cid} 会在运行时被 Nutz.Dao 替换。 * <p> * 如何为动态表名设置参数,请参看 <b>org.nutz.dao.TableName</b> 的文档说明 * <p> * <h4>动态表名的赋值规则</h4><br> * <ul type="disc"> * <li>当传入参数为数字或字符串 * <ul type="circle"> * <li>所有的动态表名变量将被其替换</li> * </ul> * </li> * <li>当传入参数为 Map * <ul type="circle"> * <li>按照动态表明变量的名称在 Map 中查找值,并进行替换</li> * <li>大小写敏感</li> * <li>未找到的变量将被空串替换</li> * </ul> * </li> * <li>当传入参数为 任意Java对象(POJO) * <ul type="circle"> * <li>按照动态表明变量名称在对象中查找对应字段的值,并进行替换</li> * <li>大小写敏感</li> * <li>未找到的变量将被空串替换</li> * </ul> * </li> * <li>当传入参数为null * <ul type="circle"> * <li>所有变量将被空串替换</li> * </ul> * <div class="hr"></div></li> * </ul> * </ol> * * @author zozoh * * @see org.nutz.dao.TableName * */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented public @interface Table { String value(); }