maven(04)--一个简单的项目
简单介绍
一个maven项目,使用hibernate框架,实现向mysql数据库中添加和获取操作,其他操作也是类似
如果你没有hibernate,那么也不要紧,这里主要介绍如何在一个maven项目中引入框架
项目流程
1、新建一个maven项目,项目命名为maven-ch04
2、添加相关依赖,如junit、hibernate、mysql驱动、log4j
pom.xml文件添加以下依赖(如果你是第一次加这些依赖,那么需要等一会,这时候IDEA会下载一些相关文件)
如果你不知道如何查找依赖,可以查看maven(02)
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
3、在mysql数据可以新建一个数据库,名称为maven
4、新建实体类User(注意新建包)
package com.simfg.maven.model;
/**
* Created by SimFG on 2017/5/14.
*/
public class User {
private int id;
private String name;
private String password; public User() {
} public User(String name, String password) {
this.name = name;
this.password = password;
} 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 getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}
5、在resources文件夹下新建hibernate.cfg.xml(如果没有resource文件夹,则在src下新建;注意修改mysql连接密码;如果你新建数据库名称不为maven,那么你也需要修改连接连接数据库名称)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory> <!-- 连接数据库 -->
<property name="connection.username">root</property>
<!-- mysql的连接密码 -->
<property name="connection.password">xxxxx</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///maven?characterEncoding=UTF8&userSSL=true</property> <!-- 配置hibernate的信息 -->
<!-- hibernate所使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 执行操作控制台是否打印sql -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 指定自动生成策略 -->
<property name="hbm2ddl.auto">update</property> <!-- 指定关联的.hbm.xml -->
<mapping resource="com/simfg/maven/model/User.hbm.xml"/> </session-factory>
</hibernate-configuration>
6、在该目录下新建一个log4j.properties,内容如下
如果你想详细了解log4j如何配置,可以参照log4j详解
log4j.rootLogger=WARN, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
7、在User.java这个文件的同一目录下新建一个User.hbm.xml文件(注意修改class标签中name属性,改成你自己命名的包)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="com.simfg.maven.model.User" table="USER">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" />
</property>
</class>
</hibernate-mapping>
8、编写一个HibernateUtil.java文件,注意建立相应的包
package com.simfg.maven.util; import com.simfg.maven.model.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; /**
* Created by SimFG on 2017/5/14.
*/
public class HibernateUtil { private static Session session;
private static Transaction transaction;
private static SessionFactory sessionFactory; public static void startup(){
// 1:创建一个sessionFactory对象
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder()
.applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
sessionFactory = metadata.getSessionFactoryBuilder().build(); // 2:创建一个session对象
session = sessionFactory.openSession();
// 3:开启事务
transaction = session.beginTransaction();
} private static void closeup(){
// 5:提交事务
transaction.commit();
// 6:关闭session
session.close();
// 7:关闭sessionFactory
sessionFactory.close();
} public static void hibernateSave(User user) throws Exception {
startup();
session.save(user);
closeup(); }
public static User hibernateQuery(){
startup();
String sql = "FROM User u WHERE u.name = ?";
User user = (User) session.createQuery(sql).setParameter(0,"sim").uniqueResult();
closeup();
return user;
}
}
9、编写一个DAO,即UserDao.java
package com.simfg.maven.dao; import com.simfg.maven.model.User;
import com.simfg.maven.util.HibernateUtil; /**
* Created by SimFG on 2017/5/14.
*/
public class UserDao{ public void addUser() {
try {
HibernateUtil.hibernateSave(new User("sim","123456"));
} catch (Exception e) {
e.printStackTrace();
}
} public User loadByUsername() {
return HibernateUtil.hibernateQuery();
}
}
10、测试,在test中新建一个TestUserDao.java
import com.simfg.maven.dao.UserDao;
import com.simfg.maven.model.User;
import org.junit.Before;
import org.junit.Test; /**
* Created by SimFG on 2017/5/14.
*/
public class TestUserDao {
private UserDao userDao; @Before
public void setup() {
userDao = new UserDao();
} @Test
public void add(){
userDao.addUser();
System.out.println(userDao.loadByUsername().getName());
}
}
运行add,结果如下图

如果你运行项目出现xxx.hbm.xml未找到
在pom.xml文件加一下代码
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
maven(04)--一个简单的项目的更多相关文章
- 如何用Maven创建一个普通Java项目
一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件. 有时候运行mvn命令失败,重复运行几次就OK了,无解(可能因为网络 ...
- 用IntelliJ IDEA学习Spring--创建一个简单的项目
这段时间想学习一下Spring,其实之前学过Spring,只是有些忘记了.而且之前学的时候是适用eclipse学习的,现在好像对IntelliJ这个工具使用挺多的,现在就学习一下这个工具的用法,顺便复 ...
- 软件----- idea 配置创建一个简单javase项目
1.显示工具栏和工具按钮,勾选上 如图,在左侧会增加对应的 2.设置项目结构,选择jdk 点击new 选择需要jdk 3.创建一个简单的java文件,和eclipse与myeslipse 差不多, ...
- vue-cli安装以及创建一个简单的项目(二)(vuex使用、发行一个简单的app)
1.vuex的使用 vuex是vue的状态管理中心,vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,常用于: 1.多个视图依赖同一状态(l例:菜单导航) 2.来自不同 ...
- vue-cli安装以及创建一个简单的项目(一)(Node\npm\webpack简单使用)
1.关系介绍 1.简单的说 Node.js 就是运行在服务端的 JavaScript. 2.NPM是随同NodeJS一起安装的包管理工具(新版的nodejs已经集成了npm),能解决NodeJS代码部 ...
- maven创建一个简单的web项目
1.确认maven插件和配置在eclipse中已经完成 如果没完成,可参考这篇博客:http://www.cnblogs.com/mmzs/p/8191979.html 2.在eclipse中用mav ...
- Maven新建一个Spring MVC项目
新建一个Maven项目,选择archetypes为maven-archetype-webapp,相关的名称按个人习惯取,我这里取Group Id:moonlit-groupArtifact Id:mo ...
- 【Django】01_创建一个简单的项目
1.创建Django项目 点击:file-->new project,出现下面的对话框.选择Django栏目,输入项目名称, 选择python解释器版本,点击create创建. Django将自 ...
- 使用Maven开发一个简单的SpringData
1:创建Maven项目 2:添加依赖(修改pom.xml为以下代码) <project xmlns="http://maven.apache.org/POM/4.0.0" x ...
随机推荐
- java集合类学习笔记之LinkedHashMap
1.简述 LinkedHashMap是HashMap的子类,他们最大的不同是,HashMap内部维护的是一个单向的链表数组,而LinkedHashMap内部维护的是一个双向的链表数组.HashMap是 ...
- c语言-折半查找的函数
void search(int n,int num[],char name[N][10]) { int top,bottom,middle,location,flag; top=0; bottom=N ...
- 面试笔试(C++部分)
1.define 和const,inline的区别 define的缺点: 1.边界效应(必须加括号,才能避免边界效应) #define MUL(A,B) A*B 而在使用的时候,这样的调用: ,b=, ...
- 【转】IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
有时候在IDEA中配置spring文件时会出现这个错误 URI is not registered (Settings | Languages & Frameworks | Schemas ...
- String字符串补位
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的读者应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形式. l ...
- python学习,day2:列表的复制,字符串的处理
---恢复内容开始--- 元组(tuple)是只读列表,不能修改,列表用中括号,元组用小括号.只能用index和count两个命令. ---恢复内容结束--- 字符串处理的代码 # coding=ut ...
- 断电后gitlab报500错误启动出错
异常断电后,gitlab报500错误,重启无效 通过sudo gitlab-ctl reconfigure启动时, 提示 [execute] pgsql:could not connect to se ...
- PM2的安装和使用简介
一.简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 二.前期必备 node 环境 npm 三.安装 全局安装 ...
- jquery ajax的getJSON使用
getJSON的定义和用法 通过 HTTP GET 请求载入 JSON 数据. 在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 " ...
- 文献综述十七:基于 sql环境下超市管理系统的设计与实现
一.基本信息 标题:基于 sql环境下超市管理系统的设计与实现 时间:2018 出版源:智能计算机与应用 文件分类:uml技术的研究 二.研究背景 从超市管理系统的实际应用出发,在系统分析过程中,从功 ...