ide:idea
技术:maven jpa mysql
- 导包 pom.xml
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.4.10.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
</dependencies>
- 创建JPA的核心配置文件src/main/resources/META-INF/persistence.xml
需要修改实际的数据库和用户密码
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<!-- name为项目工程名 -->
<persistence-unit name="jpademo">
<!--1、 jap是一个规范,是一个接口,它没有任何的具体实现,这里需要指定一个jpa具体实现 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- 2、链接数据库的基本信息 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpademo" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="123456" />
<!--3、 jpa的具体实现,hibernate的基本属性 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
3、创建实体类,并用注解链接实体类和数据表的映射关系
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //自增长
private int id;
@Column(name="user_name")
private String username;
private String password;
...
}
4.使用junit测试:
@Test
public void test() {
//1.创建entityManagerFactory -- 参数为<persistence-unit name="jpademo">的name值
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpademo");
//2.创建EntityManager
EntityManager entityManager = entityManagerFactory.createEntityManager();
//3.开启事务处理
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4.执行数据的CRUD
User user = new User();
user.setUsername("admin");
user.setPassword("admin123");
entityManager.persist(user);
//5.提交事务
transaction.commit();
//6.关闭entityManager和entityManagerFactory
entityManager.close();
entityManagerFactory.close();
}
更新
//更新
@Test
public void testUpdate(){
User user1 = manager.getReference(User.class, 62);
user1.setUserid(0);
user1.setUsername("admin");
user1.setUserpassword("admin123");
manager.merge(user1);
}
删除
//删除
@Test
public void testRemove(){
//查出来的数据才可以删除
User user1 = manager.getReference(User.class, 62);
manager.remove(user1);
}
增加
//增加
@Test
public void testInsert(){
User user = new User();
user.setUserid(1);
user.setUsername("jimy");
user.setUserpassword("1245");
manager.persist(user);
}
条件查询
//条件查询
@Test
public void testWhere(){
//位置匹配
// Query query = manager.createNativeQuery(("select * from User a where a.username=?1 "), User.class);
// query.setParameter(1,"老王");
//名字匹配
Query query = manager.createNativeQuery(("select * from User a where a.username = :name "), User.class);
query.setParameter("name", "老王");
List resultList = query.getResultList();
for (Object o : resultList) {
System.out.println(o);
}
}
原生sql | JPQL |
---|---|
update | merge |
delete | remove |
insert | persist |
select | getRefrence |