共計 6444 個字符,預計需要花費 17 分鐘才能閱讀完成。
這篇文章主要介紹“如何使用 Jorm 增刪查改數(shù)據(jù)庫”,在日常操作中,相信很多人在如何使用 Jorm 增刪查改數(shù)據(jù)庫問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用 Jorm 增刪查改數(shù)據(jù)庫”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
準備
以 MySQL 為例,執(zhí)行下面的 sql 建立數(shù)據(jù)表
CREATE TABLE `t_user` (
`id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`sex` char(4) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`career` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
引入 jar 或 maven 依賴,需要 jar 包
gerald-jorm-1.0.5.jar 最新版本下載:
commons-logging-1.1.1.jar
log4j-1.2.14.jar
mysql-connector-java-5.1.6.jar
javassist-3.11.0.GA.jar 或 cglib-nodep-2.2.2.jar (根據(jù)實際情況選擇性加入)
配置文件
在你的 java 工程的 classpath 下建立 config.properties 和 jdbc.cfg.xml 文件
config.properties 內容:
# 下面路徑可以根據(jù)實際情況指定,為相對 classpath 的路徑地址
jdbc.config.path=jdbc.cfg.xml
jdbc.cfg.xml 內容:
?xml version= 1.0 encoding= UTF-8 ?
jdbc-configuration
constant name= show_sql value= true /
constant name= jdbc.batch_size value= 600 /
constant name= bytecode.provider value= cglib /
connections default= simple
connection name= simple
property name= connection.implementation org.javaclub.jorm.jdbc.connection.impl.SimpleConnection /property
property name= connection.dialect MySQLDialect /property
property name= connection.driver com.mysql.jdbc.Driver /property
property name= connection.jdbcurl jdbc:mysql://127.0.0.1:3306/test?useUnicode=true amp;characterEncoding=UTF-8 /property
property name= connection.database test /property
property name= connection.username root /property
property name= connection.password root /property
/connection
connection name= c3p0
property name= connection.implementation org.javaclub.jorm.jdbc.connection.impl.PooledConnection /property
property name= connection.dialect MySQLDialect /property
property name= connection.driver com.mysql.jdbc.Driver /property
property name= connection.jdbcurl jdbc:mysql://127.0.0.1:3306/test?useUnicode=true amp;characterEncoding=UTF-8 /property
property name= connection.database test /property
property name= connection.username root /property
property name= connection.password root /property
property name= connection.pool.min 1 /property
property name= connection.pool.max 8 /property
property name= connection.test.sql select 1 /property
/connection
/connections
/jdbc-configuration
實體類 User.java
@PK(value = id)
@Entity(table= t_user)
public class User {
@Id
private int id;
private String name;
private String sex;
private Integer age;
private String career;
@NoColumn
private int kvalue;
public User() {
super();
}
public User(String name, String sex, Integer age, String career) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.career = career;
}
public User(Integer id, String name, String sex, Integer age, String career) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.career = career;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getCareer() {
return career;
}
public void setCareer(String career) {
this.career = career;
}
public int getKvalue() {
return kvalue;
}
public void setKvalue(int kvalue) {
this.kvalue = kvalue;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append([ + id + , + name + , + sex + , + age + , + career +]
return sb.toString();
}
}
這里字段和 java 實體類 User 的屬性在命名上是一致的,如果不一致,比如如果表創(chuàng)建 sql 為:
CREATE TABLE `t_user` (
`user_id` int(11) NOT NULL,
`user_name` varchar(50) DEFAULT NULL,
`sex` char(4) DEFAULT NULL,
`col_age` int(11) DEFAULT NULL,
`career_job` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
那么對應的實體 User 應該寫成:
@PK(value = id)
@Entity(table= t_user)
public class User {
@Id
@Column(user_id)
private int id;
@Column(user_name)
private String name;
// 與數(shù)據(jù)庫字段命名一致,可以不指定 @Column
private String sex;
@Column(col_age)
private Integer age;
@Column(career_job)
private String career;
@NoColumn
private int kvalue;
public User() {
super();
}
public User(String name, String sex, Integer age, String career) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.career = career;
}
public User(Integer id, String name, String sex, Integer age, String career) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.career = career;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getCareer() {
return career;
}
public void setCareer(String career) {
this.career = career;
}
public int getKvalue() {
return kvalue;
}
public void setKvalue(int kvalue) {
this.kvalue = kvalue;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append([ + id + , + name + , + sex + , + age + , + career +]
return sb.toString();
}
}
對 User 的增刪查改,UserCrudTest.java,記得引入 junit-4.8.2.jar
public class UserCrudTest {
static Session session;
@BeforeClass
public static void before() {
session = Jorm.getSession();
}
@AfterClass
public static void after() {
Jorm.free();
}
@Test
public void save_user() {
session.clean(User.class);
User user = null;
for (int i = 0; i 600; i++) {
String sex = (i % 2 == 0 ? 男 : 女
user = new User(Strings.fixed(5), sex, Numbers.random(98), Strings.random(8));
session.save(user);
}
}
@Test // 批量保存
public void batch_save_user() {
session.clean(User.class);
JdbcBatcher batcher = session.createBatcher();
User user = null;
for (int i = 0; i 600; i++) {
String sex = (i % 2 == 0 ? 男 : 女
user = new User(Strings.fixed(5), sex, Numbers.random(98), Strings.random(8));
batcher.save(user);
}
batcher.execute();
}
@Test
public void loadUser() {
User user = session.read(User.class, 1);
// 這里 user 是一個代理對象,因為 @Entity(table= t_user , lazy = true)
System.out.println(user.getCareer());// 發(fā)出查詢 sql
}
@Test
public void deletUser() {
User user = session.read(User.class, 1);
if(null != user) {
session.delete(user);
}
user = session.read(User.class, 1);
System.out.println(user);
}
@Test
public void test_update_proxy() {
User u;
u = session.read(User.class, 2);
Assert.assertNotNull(u);
Assert.assertTrue(u instanceof JormProxy);
u.setName(Gerald.Chen
session.update(u);
System.out.println(u.getName());
u = session.read(User.class, 2);
Assert.assertTrue(Gerald.Chen .equals(u.getName()));
}
@Test
public void queryUser() {
SqlParams User params = new SqlParams User
params.setObjectClass(User.class);
params.setFirstResult(8);
params.setMaxResults(20);
List User users = session.list(params);
System.out.println(users.size());
System.out.println(users);
}
}
到此,關于“如何使用 Jorm 增刪查改數(shù)據(jù)庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注丸趣 TV 網(wǎng)站,丸趣 TV 小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>