java配置类应该怎么存数据库

java配置类应该怎么存数据库,第1张

对象和关系再映射存入数据库。

对象映射到数据库的关系上类对应表,字段对应列,聚合字段对应一对多或者多对多,这样用起来很方便,可以只写java就完成数据库 *** 作可能还要写jpql,对于简单的逻辑可以用criteria,纯对象化的查询,java有个ORM的规范,叫JPA,hibernate实现了JPA,它还有EclipseLink等实现。

假设有这么个对象:

import java.io.Serializable

public class MyObject implements Serializable {

private static final long serialVersionUID = 1L

private int i

public int getI() {

return i

}

public void setI(int i) {

this.i = i

}

}

//测试 的方法如下

import java.io.ByteArrayInputStream

import java.io.ByteArrayOutputStream

import java.io.IOException

import java.io.ObjectInputStream

import java.io.ObjectOutputStream

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

public class test {

public static void main(String[] args) throws IOException,

ClassNotFoundException {

MyObject obj = new MyObject()

obj.setI(4567)

write(Object2Bytes(obj))

// read()

}

public static void write(byte[] b) throws ClassNotFoundException {

System.out.println(b.length)

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

try {

Connection con = DriverManager.getConnection("jdbc:odbc:temp")

String sql = "insert into tab values(?)"

PreparedStatement pstmt = con.prepareStatement(sql)

pstmt.setBytes(1, b)

pstmt.execute()

pstmt.close()

con.close()

} catch (Exception e) {

e.printStackTrace()

}

}

public static void read() throws ClassNotFoundException {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

try {

Connection con = DriverManager.getConnection("jdbc:odbc:temp")

String sql = "select * from tab"

PreparedStatement pstmt = con.prepareStatement(sql)

ResultSet res = pstmt.executeQuery()

while (res != null &&res.next()) {

byte[] b = res.getBytes("key")

System.out.println(b.length)

MyObject obj = (MyObject) Bytes2Object(b)

System.out.println(obj.getI())

}

pstmt.close()

con.close()

} catch (Exception e) {

e.printStackTrace()

}

}

// 将对象转换成字节数组

public static byte[] Object2Bytes(Object obj) throws IOException {

ByteArrayOutputStream baos = new ByteArrayOutputStream()

ObjectOutputStream oos = new ObjectOutputStream(baos)

oos.writeObject(obj)

return baos.toByteArray()

}

// 将字节数组转换成为对象

public static Object Bytes2Object(byte[] b) throws IOException,

ClassNotFoundException {

ByteArrayInputStream bais = new ByteArrayInputStream(b)

ObjectInputStream ois = new ObjectInputStream(bais)

Object obj = ois.readObject()

return obj

}

}

添加注解存数据库。

当创建的类和数据库里面的每一项一一映射时,但是又需要多些一些属性是不存在数据库里面的,此时可以在此属性上加一个注解@TableField(exist = false)就可以,另外这里添加一些经常用到的注解@Id 表示这个字段是主键@Column(name = “xx”) 表示把字段和数据库的名字对应,理解成起别名@Transactional 可以作用在接口、类、类方法。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9630384.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存