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. 20170225-第一件事:SAP模块清单

    第一件事:SAP模块清单 AM 资产会计 资产会计BC SAP Netweaver SAP NetweaverBW 业务信息仓库 业务信息仓库CA 常规跨应用程序 常规跨越应用程序CO 控制 控制 C ...

  2. C# delegate Action<T> lambda表达式

    转载以记录:http://blog.csdn.net/educast/article/details/7219854 在使用 Action<T> 委托时,不必显式定义一个封装只有一个参数的 ...

  3. Delphi语言最好的JSON代码库 mORMot学习笔记1(无数评论)

    mORMot没有控件安装,直接添加到lib路径,工程中直接添加syncommons,syndb等到uses里 --------------------------------------------- ...

  4. js运行机制及异步编程(一)

    相信大家在面试的过程中经常遇到查看执行顺序的问题,如setTimeout,promise,async await等等,各种组合,是不是感觉头都要晕掉了,其实这些问题最终还是考察大家对js的运行机制是否 ...

  5. Ubuntu下如何安装并使用Objective-C

    Objective-C是本人用过的最佳类C.面向对象的编程语言.Objective-C与标准C完美兼容,而在此基础上又加上了将面向对象的基础概念诠释得最好的SmallTalk元素,使得它既简洁.又灵活 ...

  6. !important的用法(IE6 兼容的解决方法)

    我们知道,CSS写在不同的地方有不同的优先级, .css文件中的定义 < 元素style中的属性,但是如果使用!important,事情就会变得不一样. 首先,先看下面一段代码: <!DO ...

  7. shell脚本怎么调试

    shell是Linux系统上常用的一种脚本语言.一般从事web后台开发的从业者,都会用到shell,因此shell调试也是一项必备的技能.本文教你如何进行shell脚本调试. 工具/原料   Linu ...

  8. 使用sql compare生成的sql语句

    创建表以及主键 判断表是否存在 OBJECT_ID 判断主键是否存在 SELECT 1 FROM sys.indexes WHERE name = N'PK_LISA_NoUseWebpartRepl ...

  9. WPF 之Converter

    WPF  之Converter Leo 在我们做项目的时候,经常会遇见这样的事情: 在数据中我们定义的是true,false 而在现实的时候则可能要求男,女 我们还得能定义成了0,1,2,3,4,5, ...

  10. 扩展KMP(占位)

    先放代码. #include<cstdio> #include<iostream> #include<cstring> using namespace std; ; ...