Hibernate逍遥游记-第1章-JDBC访问数据库
1.
package mypack; import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*; public class MonkeyGui implements ActionListener{
private BusinessService businessService=new BusinessService(); //界面的主要窗体组件
protected JFrame frame;
protected Container contentPane; //主面板上的组件
protected JPanel custPan=new JPanel();
protected JLabel nameLb=new JLabel("猴子姓名");
protected JLabel genderLb=new JLabel("性别");
protected JLabel ageLb=new JLabel("年龄");
protected JLabel logLb=new JLabel(""); protected JTextField nameTf=new JTextField(25);
protected JTextField genderTf=new JTextField(25);
protected JTextField ageTf=new JTextField(25);
protected JButton addBt=new JButton("保存"); /** 构造方法 */
public MonkeyGui(){
buildDisplay();
} /** 创建图形界面 */
private void buildDisplay(){
frame=new JFrame("花果山信息管理系统");
buildCustPanel(); //向主窗体中加入custPan面板
contentPane=frame.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(custPan,BorderLayout.CENTER); frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); } /** 创建custPan面板 */
private void buildCustPanel(){
custPan.setLayout(new GridLayout(4,2,5,5));
custPan.add(nameLb);
custPan.add(nameTf);
custPan.add(genderLb);
custPan.add(genderTf);
custPan.add(ageLb);
custPan.add(ageTf); custPan.add(addBt);
custPan.add(logLb); addBt.addActionListener(this); } public void actionPerformed(ActionEvent event){
try{
Monkey monkey=new Monkey();
monkey.setName(nameTf.getText().trim());
monkey.setAge(Integer.parseInt(ageTf.getText().trim()));
monkey.setGender(genderTf.getText().trim().charAt(0));
businessService.saveMonkey(monkey);
logLb.setText("猴子信息已经保存成功。");
}catch(Exception e){
logLb.setText("猴子信息保存失败。");
e.printStackTrace();
} } public static void main(String args[]){
new MonkeyGui();
} }
2.
package mypack;
import java.io.*;
import java.util.*;
import java.sql.*; public class BusinessService{
private String dbUrl ="jdbc:mysql://localhost:3306/SAMPLEDB";
private String dbUser="root";
private String dbPwd="1234"; static{
try{
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
}catch(Exception e){throw new RuntimeException(e);}
} /** 持久化一个Monkey对象 */
public void saveMonkey(Monkey monkey){
Connection con=null;
try {
//建立数据库连接
con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
//创建一个SQL声明
Statement stmt = con.createStatement();
//向MONKEYS表插入记录
stmt.executeUpdate("insert into MONKEYS(NAME,AGE,GENDER) values( "
+"'"+monkey.getName()+"',"
+monkey.getAge()+","
+"'"+monkey.getGender()+"')");
stmt.close();
}catch(Exception e) {
throw new RuntimeException(e);
} finally {
try{
if(con!=null)con.close();
}catch(Exception e){e.printStackTrace();}
}
} }
3.
package mypack;
public class Monkey{
private Long id;
private String name;
private int age;
private char gender;
public Monkey(){}
public Long getId(){
return id;
}
private void setId(Long id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age =age ;
}
public char getGender(){
return gender;
}
public void setGender(char gender){
this.gender =gender ;
}
}
4.
drop database if exists SAMPLEDB;
create database SAMPLEDB DEFAULT CHARACTER SET utf8;
use SAMPLEDB; create table MONKEYS (
ID bigint not null auto_increment primary key,
NAME varchar(30) not null,
AGE int,
GENDER char(1)
);
5.build.xml
<?xml version="1.0"?>
<project name="Learning Hibernate" default="prepare" basedir="."> <!-- Set up properties containing important project directories -->
<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/> <!-- Set up the class path for compilation and execution -->
<path id="project.class.path">
<!-- Include our own classes, of course -->
<pathelement location="${class.root}" />
<!-- Include jars in the project library directory -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path> <!-- Create our runtime subdirectories and copy resources into them -->
<target name="prepare" description="Sets up build structures">
<delete dir="${class.root}"/>
<mkdir dir="${class.root}"/> <!-- Copy our property files and O/R mappings for use at runtime -->
<copy todir="${class.root}" >
<fileset dir="${source.root}" >
<include name="**/*.properties"/>
<include name="**/*.hbm.xml"/>
<include name="**/*.xml"/>
</fileset>
</copy>
</target> <!-- Compile the java source of the project -->
<target name="compile" depends="prepare"
description="Compiles all Java classes">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="project.class.path"/>
</javac>
</target> <target name="rungui" description="Run a Hibernate sample"
depends="compile" >
<java classname="mypack.MonkeyGui" fork="true">
<classpath refid="project.class.path"/>
</java>
</target> </project>
6.在命令行中输入 ant rungui,会编译代码后运行MonkeyGui类的main()方法

7.
package mypack;
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import java.util.*;
public class MonkeyGui implements ActionListener{ private BusinessService businessService=new BusinessService();
//界面的主要窗体组件 protected JFrame frame; protected Container contentPane;
//主面板上的组件 protected JPanel custPan=new JPanel(); protected JLabel nameLb=new JLabel("猴子姓名"); protected JLabel genderLb=new JLabel("性别"); protected JLabel ageLb=new JLabel("年龄"); protected JLabel logLb=new JLabel("");
protected JTextField nameTf=new JTextField(25); protected JTextField genderTf=new JTextField(25); protected JTextField ageTf=new JTextField(25); protected JButton addBt=new JButton("保存");
/** 构造方法 */ public MonkeyGui(){ buildDisplay(); } /** 创建图形界面 */ private void buildDisplay(){ frame=new JFrame("花果山信息管理系统"); buildCustPanel(); //向主窗体中加入custPan面板 contentPane=frame.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(custPan,BorderLayout.CENTER); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
} /** 创建custPan面板 */ private void buildCustPanel(){ custPan.setLayout(new GridLayout(4,2,5,5)); custPan.add(nameLb); custPan.add(nameTf); custPan.add(genderLb); custPan.add(genderTf); custPan.add(ageLb); custPan.add(ageTf);
custPan.add(addBt); custPan.add(logLb); addBt.addActionListener(this);
} public void actionPerformed(ActionEvent event){ try{ Monkey monkey=new Monkey(); monkey.setName(nameTf.getText().trim()); monkey.setAge(Integer.parseInt(ageTf.getText().trim())); monkey.setGender(genderTf.getText().trim().charAt(0)); businessService.saveMonkey(monkey); logLb.setText("猴子信息已经保存成功。"); }catch(Exception e){ logLb.setText("猴子信息保存失败。"); e.printStackTrace(); } } public static void main(String args[]){ new MonkeyGui(); } }
Hibernate逍遥游记-第1章-JDBC访问数据库的更多相关文章
- Hibernate逍遥游记-第15章处理并发问题-003乐观锁
1. 2. drop database if exists SAMPLEDB; create database SAMPLEDB; use SAMPLEDB; drop table if exists ...
- Hibernate逍遥游记-第15章处理并发问题-002悲观锁
1. 2. hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mys ...
- Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(<idbag><collection-id>)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第12章 映射值类型集合-001映射set(<element>)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第10章 映射继承关系-003继承关系树中的每个类对应一个表(joined-subclass)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第10章 映射继承关系-001继承关系树中的每个具体类对应一个表
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第9章 Hibernate的映射类型
1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
- Hibernate逍遥游记-第8章 映射组成关系(<component>、<parent>)
一. 1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...
随机推荐
- 关于ajax解析
出处:http://www.cnblogs.com/huashanlin/archive/2006/10/09/524707.html 要很好地领会Ajax技术的关键是了解超文本传输协议(HTTP), ...
- Junit的最简单样例:Hello world!
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3824934.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- 文件存储之-内存文件系统tmpfs
前言 我们都知道,对于单台服务器来说,除了 CPU ,内存就是我们存储数据最快的设备.如果可以把数据直接存储在内存中,对于性能的提升就不言而喻了.那么我们先来讲讲如何使用内存来存储文件. 首先,我们先 ...
- mysql主从集群定时备份脚本
#!/bin/bash dpath="/mysql_backup" mydays="7" username="root" mysql_p ...
- 快速解码base64和utf-8的ASCII编码和URL解码
看论坛上总是有人发乱七八糟的文字,根本看不懂,用下面的方法解密一下. 只要有浏览器的开发者工具就行了. UTF-16解码 console.log("\u5475\u5475") U ...
- [DevExpress]ChartControl之创建X,Y轴Title示例
关键代码: /// <summary> /// 设置X轴Title /// </summary> /// <param name="chart"> ...
- 用端口映射在Apache中对每个项目分配端口,实现一个端口访问一个网站
映口映射的功能主要就是实际互联网可以访问当前进行映射的电脑,首先我们要进行路由器的端口映射,常见的开放端口有80,21,3389等,80是网站常用端口,21是FTP服务器常用端口,3389是远程桌面连 ...
- WordPress 后台禁用Google Open Sans字体,加速网站
解决方法很简单,安装启用 Disable Google Fonts 或者 Remove Open Sans font Link from WP core 其中之一即可.或者如果你没有使用WP自带的官方 ...
- java 中的匿名内部类
转自http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能 ...
- Cocos2d-x第一个坑,NDK 编译环境
这些天搭建windows cocos2d-x的环境,基本上崩溃到死.目前好转.终于可以编译通过: 生成模板工程:在cmd下进入cocos2d-x的主目录,D:\Android\cocos2d-x-2. ...