引言
说出来都不好意思,~ ^ ~,JDBC前前后后学了两次,都没认真学,直到最近开始搞项目才意识到它的重要性,尤其时之前以为鸡肋的知识点(ORM,DAO)这俩很重要!
知识点
ORM与DAO都是自己建的Java类,重要的是思想
- ORM
(个人对ORM,DAO的认识,欢迎指正)
ORM=Object Relationship Database Mapping
把数据库中的一个记录当一个对象来处理。
从程序员的角度来理解,ORM类相当于在编译器中操作数据库。
- DAO
DAO=DataAccess Object
数据访问对象
在DAO类中封装所有的JDBC代码,其他地方看不到.这在项目实战中很重要(我刚学的时候感觉鸡肋,后来才意识到自己太?^?)
可以带来我们平时用app的体验,让测试人员无需看冗长的JDBC代码
实例
ORM
先创建一个对象Hero;
package ORMDemo;
public class Hero {
public int id;
public String name;
public String psd;
public String tell;
public float money;
public int pow;
}
再创建ORM类
package ORMDemo;
import java.sql.*;
public class OrmHero {
public Hero getHero(int id) {
Hero hero =null;
//"jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin"
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ordersystem?characterEncoding=UTF-8","root", "admin");
Statement s=c.createStatement();
String sql="select * from users where id="+id;
// s.execute(sql);
ResultSet rs=s.executeQuery(sql);
if(rs.next()){
hero =new Hero();
hero.name=rs.getString(2);
hero.psd=rs.getString(3);
hero.tell=rs.getString(4);
hero.money =rs.getFloat(5);
//int pow=rs.getInt(6);
hero.pow=rs.getInt(6);
}
}catch (SQLException e){
e.printStackTrace();
}
return hero;
}
public static void add(Hero hero){
try{
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException e){
e.printStackTrace();
}
try{
Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ordersystem?characterEncoding=UTF-8","root", "admin");
Statement s=c.createStatement();
String sql="insert into users values (?,?,?,?,?,?)";
PreparedStatement ps=c.prepareStatement(sql);
ps.setInt(1,hero.id);
ps.setString(2,hero.name);
ps.setString(3,hero.psd);
ps.setString(4,hero.tell);
ps.setFloat(5,hero.money);
ps.setInt(6,hero.pow);
ps.execute();
}catch (SQLException e){
e.printStackTrace();
}
}
public static void main(String[] args){
OrmHero s=new OrmHero();
Hero f=s.getHero(1);
System.out.println(f.money);
Hero f1=new Hero();
f1.id=3;
// f1.name="小";
String n="123";
f1.name=n;
f1.psd="12345";
f1.tell="678910";
f1.money=234.5f;
f1.pow=0;
add(f1);
//添加一条记录,读者可自行实现删,改,查~
}
}
DAO
创建一个Item对象
package DAO;
public class Item {
public int id;
public String name;
public float money;
public Item(){};
public Item(String s) {
this.name=s;
}
}
再创建DAO类
package DAO;
import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
import java.sql.*;
public class ItemDao {
public void ItemDao(){
try{
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException e){
e.printStackTrace();
}
}
public void add(Item f){
try{
Connection c= DriverManager.getConnection("jdbc:mysql://localhost/ordersystem?characterEncoding=UTF-8",
"root","admin");
String sql="insert into item values(null,?,?)";
PreparedStatement s=c.prepareStatement(sql);
s.setString(1,f.name);
s.setFloat(2,f.money);
s.execute();
System.out.println("成功插入了一次");
//~~~
}catch (SQLException E){
E.printStackTrace();
}
}
public void update(Item f){
try{
Connection C=DriverManager.getConnection("jdbc:mysql://localhost/ordersystem?characterEncoding=utf-8",
"root","admin");
String sql="update item set name=? where id=? ";
PreparedStatement s=C.prepareStatement(sql);
s.setString(1,f.name);
s.setInt(2,f.id);
s.execute();
System.out.println("修改成功");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
再写测试类(运行Main)
package DAO;
public class Test {
public static void main(String[] args){
ItemDao s1=new ItemDao();
for(int i=1;i<=10;i++){
Item f1=new Item();
f1.name=""+i;
s1.add(f1);
}
Item f2=new Item();
f2.id=3;
f2.name="2345";
System.out.println("我要搞"+f2.id+"的名字为"+f2.name);
s1.update(f2);
}
}
ps:item的建表语句
CREATE TABLE item (
id int(11) AUTO_INCREMENT,
name varchar(30) ,
price int,
PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;
总结
越来越能理解社会对程序员普遍印象为什么是呆,邋遢的了,因为搞代码真的需要坐在电脑前全身心投入
(hyly)