目前项目当中使用mapper.xml文件方式对数据库进行操作,但是每个里边都有增/删/改/查,为了方便开发,把这些公共的代码提取出来,不用当做基类,不用每个Mapper文件都写了
准备工作:
1:数据库表
CREATE TABLE `t_permission` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限ID',
`type` int(11) NOT NULL COMMENT '权限类型',
`name` varchar(255) NOT NULL COMMENT '权限名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='权限表';
2:准备实体类
public class TPermissionEntity {
@PrimaryKey //下面步骤2中自定义注解
private Integer id;//权限ID
private Integer type;//权限类型
private String name;//权限名称
//省略了get,set方法....
}
步骤1:编写工具类Tools:作用:用于驼峰和数据库字段的转换
因为类的名称用的是驼峰命名,所以这里需要转换一下
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 驼峰名称和下划线名称的相互转换
*/
public class Tool {
private static Pattern linePattern = Pattern.compile("_(\\w)");
/** 下划线转驼峰 */
public static String lineToHump(String str) {
str = str.toLowerCase();
Matcher matcher = linePattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
}
matcher.appendTail(sb);
return sb.toString();
}
private static Pattern humpPattern = Pattern.compile("[A-Z]");
/** 驼峰转下划线,效率比上面高 */
public static String humpToLine(String str) {
Matcher matcher = humpPattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
}
matcher.appendTail(sb);
return sb.toString();
}
}
步骤2:自定义两个注解,分别用于类字段的排除和字义主键
@Target({ElementType.