当前位置: 移动技术网 > IT编程>开发语言>Java > Mysql框架---HMySql

Mysql框架---HMySql

2019年06月10日  | 移动技术网IT编程  | 我要评论
Java 数据库框架 在我学习java数据库框架的时候,第一个用的是Hibernate,但是到现在,我可能已经快忘记它了,毕竟快两年没有碰的东西,后来一直再用MyBatis.因为它简单. 但是本文不会介绍它们俩,介绍一个我的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

image.png

image.png

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中没有空构造方法,可能会报一下错误
解决办法:增加空构造方法

image.png

2:没有在项目根目录下新建h-mysql.xml文件
解决办法:建立h-mysql.xml

image.png

3:配置文件节点名错误
解决办法:根据以下代码进行节点名检查

image.png

<?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:少重要节点配置
解决办法:根据错误的信息,检查配置文件中少写的节点

image.png

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网