Java 数据库框架
在我学习java数据库框架的时候,第一个用的是Hibernate,但是到现在,我可能已经快忘记它了,毕竟快两年没有碰的东西,后来一直再用MyBatis.因为它简单.
但是本文不会介绍它们俩,介绍一个我的MySql框架,但是我却不知道叫它什么.暂时就叫他HMySql吧.
初心是增强对java 反射、注解的理解,所设计的,还有很多bug,望指出,源码后续会给出
用途:大一快课设了.很多同学还不会jdbc操作,希望可以借助它,完成课设
下载链接
https://www.houxinlin.com/mysql-frame.jar
由于是学生,没有钱去增加带宽,下载速度可能很慢,嗯~~~是很慢很慢的那种慢,还望耐心等待
00 集成到项目中
1:在项目根目录下新建lib文件夹,把jar包粘贴进去,右击jar包----Build Path---Add to Build Path
2:集成jar后,还需要在项目根目录下创建一个h-mysql.xml文件,用来配置数据库,配置如下
com.mysql.cj.jdbc.Driver root hxl495594.. localhost homework1 true
(这是所有的配置信息了,它看起来很少)
01 创建数据表
DROP TABLE IF EXISTS `tb_user`;CREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名', `age` tinyint(4) UNSIGNED NULL DEFAULT NULL COMMENT '年龄', `blance` decimal(9, 2) NULL DEFAULT NULL COMMENT '余额', `is_vip` enum('Y','N') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否VIP', `register_timer` datetime(0) NULL DEFAULT NULL COMMENT '注册时间', `girl_friend` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '女朋友名字', `phone_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 121 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;
02 编写Java bean
这里有几个需要注意的:
1:需要再类上加@TableName注解,用来映射表名 2:需要继承BeanSupport类, 3:主键上要增加@PrimaryKey 4:@FieldName表示字段对应的数据表中的列名import com.houxinlin.annotation.FieldName;import com.houxinlin.annotation.PrimaryKey;import com.houxinlin.annotation.TableName;import com.houxinlin.dbimpl.BeanSupport;@TableName(tabName="tb_user")public class UserMapp extends BeanSupport{ @PrimaryKey @FieldName(fieldName="id") private int id; @FieldName(fieldName="user_name") private String userName; @FieldName(fieldName="age") private int age; @FieldName(fieldName="blance") private BigDecimal blance; @FieldName(fieldName="is_vip") private String isVip; @FieldName(fieldName="register_timer") private String registerTimer; @FieldName(fieldName="girl_friend") private String grilFriendName; public UserMapp() { super(); } @FieldName(fieldName="phone_number") private String phoneNumber; public UserMapp(int id, String userName, int age, BigDecimal blance, String isVip, String registerTimer, String grilFriendName, String phoneNumber) { super(); this.id = id; this.userName = userName; this.age = age; this.blance = blance; this.isVip = isVip; this.registerTimer = registerTimer; this.grilFriendName = grilFriendName; this.phoneNumber = phoneNumber; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public BigDecimal getBlance() { return blance; } public void setBlance(BigDecimal blance) { this.blance = blance; } public String getIsVip() { return isVip; } public void setIsVip(String isVip) { this.isVip = isVip; } public String getRegisterTimer() { return registerTimer; } public void setRegisterTimer(String registerTimer) { this.registerTimer = registerTimer; } public String getGrilFriendName() { return grilFriendName; } public void setGrilFriendName(String grilFriendName) { this.grilFriendName = grilFriendName; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } @Override public String toString() { return toJson(true); }}
03 测试
需要注意的是:
1:必须调用HDbManager.getInstance().init();进行初始化,如果没有创建h-mysql.xml文件.它可能会报异常.import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import com.houxinlin.db.HDbManager;import com.houxinlin.dbimpl.HxlDb;import com.houxinlin.frame.FilterCondition;public class Main { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:dd"); public static void main(String[] args) { /** * 初始化数据库 你必须这么做!!!! */ HDbManager.getInstance().init(); UserMapp user = new UserMapp(0, "侯鑫林", 20, new BigDecimal("666"), "Y", sdf.format(new Date()), "乔羽祥", "11111111111"); // 保存 必须继承BeanSupport,同比要有一个空构造方法 user.save(); /** * 查找所有用户 */ Listlists = HxlDb.findAll(UserMapp.class); System.out.println("全部用户---->" + lists); //根据条件查找 UserMapp us=null; us=HxlDb.findOneByCondition(UserMapp.class, new FilterCondition.Builder().addEquseToCodition("user_name", "侯鑫林").build()); System.out.println("查找指定姓名----->"+us); //根据Id查找 us=HxlDb.findByPrimaryId(UserMapp.class, 119); System.out.println("根据ID查找----->"+us); //修改 us.setBlance(new BigDecimal("8888")); HxlDb.upDataByPrimaryId(us, 118); System.out.println("修改后的值----->"+HxlDb.findByPrimaryId(UserMapp.class, 119)); /** * 根据条件删除年龄大于10岁的人 */ HxlDb.deleteByCondition(UserMapp.class, new FilterCondition.Builder().addGreaterThan("age", 10).build()); System.out.println(HxlDb.findAll(UserMapp.class)); }}
04 异常处理
1:如果java bean中没有空构造方法,可能会报一下错误
解决办法:增加空构造方法2:没有在项目根目录下新建h-mysql.xml文件
解决办法:建立h-mysql.xml3:配置文件节点名错误
解决办法:根据以下代码进行节点名检查com.mysql.cj.jdbc.Driver root hxl495594.. localhost homework1 true
4:少重要节点配置
解决办法:根据错误的信息,检查配置文件中少写的节点