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. mybatis中GenericTokenParser的用法

    代码示例 import org.apache.ibatis.parsing.GenericTokenParser;import org.apache.ibatis.parsing.TokenHandl ...

  2. Codeforces Round #106 (Div. 2) D. Coloring Brackets —— 区间DP

    题目链接:https://vjudge.net/problem/CodeForces-149D D. Coloring Brackets time limit per test 2 seconds m ...

  3. nyoj--86--找球号(一)(hash&&set&&二分)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...

  4. UIDynamic 基础

      一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力.弹性碰撞 ...

  5. Android Studio四大组件之Service

    Service在Android运行在后台,它没有可视化界面,只是默默运行在后台.我们以一个后台定时器的例子清晰的说明Service的运行流程. 一.创建Service类 项目右键->New-&g ...

  6. (转)Vim自动补全神器:YouCompleteMe

    原文出处:http://blog.jobbole.com/58978/ 第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名.本来打算在实训期间来完成安装的,无奈网实在不给力,也就 ...

  7. 并不对劲的bzoj3994:loj2185:p3327[SDOI2015]约数个数和

    题目大意 设d(x)为x的约数个数,\(t\)组询问,给定\(n,m\)(\(t,m,n\leq5*10^4\)),求$ \sum^n_{i=1}\sum^m_{j=1}d(i*j)$ 题解 假设\( ...

  8. bzoj2004公交线路——DP+矩阵加速递推

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 求方案数,想到DP: 因为两个站间距离<=p,所以每p个站中所有车一定都会停靠至 ...

  9. 微信小程序 WXML、WXSS 和JS介绍及详解

    前几天折腾了下.然后列出一些实验结果,供大家参考. 百牛信息技术bainiu.ltd整理发布于博客园 0. 使用开发工具模拟的和真机差异还是比较大的.也建议大家还是真机调试比较靠谱. 1. WXML( ...

  10. RobotFramework:App滑动屏幕

    转自:http://blog.csdn.net/jgw2008/article/details/77993399 在使用Robot Framework测试Android机器过程中, 经常要用到滚屏操作 ...