千家信息网

如何使用Jorm增删查改数据库

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍"如何使用Jorm增删查改数据库",在日常操作中,相信很多人在如何使用Jorm增删查改数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用Jor
千家信息网最后更新 2024年11月23日如何使用Jorm增删查改数据库

这篇文章主要介绍"如何使用Jorm增删查改数据库",在日常操作中,相信很多人在如何使用Jorm增删查改数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用Jorm增删查改数据库"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

> 准备
以MySQL为例,执行下面的sql建立数据表
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 (根据实际情况选择性加入)


> 配置文件
在你的java工程的classpath下建立config.properties和jdbc.cfg.xml文件
config.properties内容:
# 下面路径可以根据实际情况指定,为相对classpath的路径地址
jdbc.config.path=jdbc.cfg.xml

jdbc.cfg.xml内容:








org.javaclub.jorm.jdbc.connection.impl.SimpleConnection
MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
test
root
root


org.javaclub.jorm.jdbc.connection.impl.PooledConnection
MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
test
root
root
1
8
select 1



> 实体类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的属性在命名上是一致的,如果不一致,比如如果表创建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;

// 与数据库字段命名一致,可以不指定@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());// 发出查询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 params = new SqlParams();
params.setObjectClass(User.class);
params.setFirstResult(8);
params.setMaxResults(20);
List users = session.list(params);
System.out.println(users.size());
System.out.println(users);
}

}


到此,关于"如何使用Jorm增删查改数据库"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0