Mysql框架---HMySql
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文件,用来配置数据库,配置如下
<?xml version="1.0" encoding="utf-8"?> <h-mysql> <database-cnf> <driver>com.mysql.cj.jdbc.driver</driver> <user-name>root</user-name> <user-pass>hxl495594..</user-pass> <ip>localhost</ip> <database-name>homework1</database-name> </database-cnf> <configure> <!-- 是否打开sql执行日志 --> <logger>true</logger> </configure> </h-mysql>
(这是所有的配置信息了,它看起来很少)
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()), "乔羽祥", "1504889423"); // 保存 必须继承beansupport,同比要有一个空构造方法 user.save(); /** * 查找所有用户 */ list<usermapp> lists = 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.xml
3:配置文件节点名错误
解决办法:根据以下代码进行节点名检查
<?xml version="1.0" encoding="utf-8"?> <h-mysql> <database-cnf> <driver>com.mysql.cj.jdbc.driver</driver> <user-name>root</user-name> <user-pass>hxl495594..</user-pass> <ip>localhost</ip> <database-name>homework1</database-name> </database-cnf> <configure> <!-- 是否打开sql执行日志 --> <logger>true</logger> </configure> </h-mysql>
4:少重要节点配置
解决办法:根据错误的信息,检查配置文件中少写的节点
上一篇: vue 生命周期函数