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()), "乔羽祥",
"11111111111"); // 保存 必须继承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:少重要节点配置

解决办法:根据错误的信息,检查配置文件中少写的节点

Mysql框架---HMySql的更多相关文章

  1. SSM(Spring+SpringMVC+Mybatis)+Mysql 框架整合搭建流程以及其间注意事项

    复习SSM框架,太久没用自己手动撘一个,发现自己还是有很多地方忘记了和没注意的事项... 首先,直接给出总流程: 零.引jar包 1.引包(或者写maven.pom) 一.数据库部分 设计数据库各表结 ...

  2. MYSQL学习(二) --MYSQL框架

    MYSQL架构理解 通过对MYSQL重要的几个属性的理解,建立一个基本的MYSQL的知识框架.后续再补充完善. 一.MYSQL架构 这里给的架构描述,是很宏观的架构.有助于建立对MYSQL整体理解. ...

  3. spring mvc与mybatis与maven+mysql框架整合

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  4. mysql基本介绍和优化技巧

    一. mysql框架和基本介绍 1. 框架图 更详细: 2. 存储引擎 MYISAM与INNODB对比: MYISAM:mysql5.1及以前版本的默认存储引擎.支持全文检索,压缩,表级锁等,但不支持 ...

  5. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯. 通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车 ...

  6. SSM框架中如何简便上传文件表单

    此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...

  7. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  8. (转) Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    http://blog.csdn.net/u010648555/article/details/60767633 当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的 ...

  9. 【时区问题】SpringBoot+mybatis查询mysql的datetime类型数据时间差14小时

    [时区问题]MyBatis查询MySQL的datetime类型数据时间差14小时 故障解决方式 与数据库连接时,定义时区,避免mybatis框架从mysql获取时区.在连接上加上 serverTime ...

随机推荐

  1. Unbuntu 终端中使用Tab键不能自动补全

    解决方案 1.利用vi编辑器打开 /etc/bash.bashrc文件(需要root权限) sudo vi /etc/bash.bashrc 2.找到文件中的下列代码 #enable bash com ...

  2. 调节音量的各个方法——AudioManager的使用

    AudioManager类位于android.Media包中,该类提供访问控制音量和铃声模式的操作. //获取AudioManager实例对象 AudioManager audioManage = ( ...

  3. UIButton常见属性和方法

    一.创建,两种方法: 1. 常规的 initWithFrame UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 8 ...

  4. WC2017游记

    Day0 到杭州之后出了点锅换了辆车,等了好久才开= =到宿舍发现路由器就在房门口,稳啊,过了一会儿就连不上了= =而且只有门口那个连不上,可以连上楼下的= =之后干了啥也忘了…… Day1 上午直接 ...

  5. python-day-9- 进程-异步IO\

    本节内容 进程 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 多进程multiprocessing multiprocessing is a package that sup ...

  6. 启动和测试oracle是否安装成功

    转自:https://www.cnblogs.com/justdo-it/articles/5112576.html 测试步骤1:请执行操作系统级的命令:tnsping orcl 测试步骤 2:请执行 ...

  7. 2.27 MapReduce Shuffle过程如何在Job中进行设置

    一.shuffle过程 总的来说: *分区 partitioner *排序 sort *copy (用户无法干涉) 拷贝 *分组 group 可设置 *压缩 compress *combiner ma ...

  8. https://www.luogu.org/blog/An-Amazing-Blog/mu-bi-wu-si-fan-yan-ji-ge-ji-miao-di-dong-xi

    https://www.luogu.org/blog/An-Amazing-Blog/mu-bi-wu-si-fan-yan-ji-ge-ji-miao-di-dong-xi

  9. poj3187【dfs】

    挑战-搜索 题意: 给一个n和sum,代表n层的杨辉三角,然后给一个和,问最低层的数字情况. 思路: ①:预处理一个底层对于和的系数数组, sum = 0Cn-1*num[1] + 1Cn-1*num ...

  10. hdoj1257【疑问】(贪心)

    这完全可以达到3*1e4个啊...如果这样子,这复杂度就炸了吧?... #include<iostream> #include<cstdio> #include<math ...