maven系列:构建maven工程

今天我们来通过一个项目小实战(spring+mybatis),让大家对maven有更加深刻的认知

一)建立maven工程
①右击new-》other-》maven-》Maven Project,然后next、next,填写项目需要的相关信息,点击finish
②修改项目jdk,项目上右击选择properties,进入一窗口
        --点击Java Build Path,修改JRE System Library,选择你安装的jdk。
        --点击Resource,修改字符集为uTF-8
        --点击Java Compiler,修改编译版本为1.7或者1.8(ps:这个跟项目中的spring版本有关,比如我演示用的这个就不能用1.8,要不然报依赖有关的额错误),1.5有点太远古(不过我们这个例子中影响不大)
③我们知道,有了mybatis就是要操作数据库了哈,嗯,肯定涉及到很多数据库配置文件,根据管理,约束?我们都会再建一个包来放这些文件,右击项目-》new-》Source Folder
一顿操作之后项目的目录结构如下
maven系列:构建maven工程_第1张图片

二)添加依赖,我们打开pom.xml文件添加依赖


                
                        org.springframework
                        spring-core
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-webmvc
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-context
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-context-support
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-aop
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-aspects
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-tx
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-jdbc
                        3.2.8.RELEASE
                
                
                        org.springframework
                        spring-web
                        3.2.8.RELEASE
                

                
                
                        junit
                        junit
                        4.12
                        test
                
                
                        org.springframework
                        spring-test
                        3.2.8.RELEASE
                        test
                

                
                
                        log4j
                        log4j
                        1.2.12
                
                
                        org.slf4j
                        slf4j-api
                        1.6.6
                
                
                        org.slf4j
                        slf4j-log4j12
                        1.6.6
                

                
                
                        org.mybatis
                        mybatis
                        3.2.1
                
                
                        org.mybatis
                        mybatis-spring
                        1.2.0
                

                
                
                        mysql
                        mysql-connector-java
                        8.0.12
                

三)下载msyql数据库,我下载的是最新的8.X,这个去官网下载,然后一路next就好,注意,如果电脑比较新,去下载个c++2015,保证能安装成功
连接数据库的方式有很多中,比如使用三方工具sqlyog,或者使用mysql自带工具:MySQL Workbench……,进去之后我们看下字符集:show variables like 'character%';
新版的mysql安装都是utf8mb4,(5.7的是utf-8),其中utf8mb4更为强大哈,不仅能兼容utf-8,同时支持4字节的表情字符【普通的字符串或者表情占三个字节,移动端的表情符号占四个字节】,腻害了,mysql也是良心企业啊
建立数据库oa,建库语句:create database oa
在建一个表employee,建表语句:
use oa; 
CREATE TABLE `employee` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(45) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工表'

四)写配置文件
application-organ.xml(注意,这个地方没有使用application.xml,是因为如果这个一个单独的小项目,那么可以直接这样命令,我们是打算搞一个大项目的,所以得有所区分)  
jdbc.properties(数据库配置文件)   
log4j.properties(日志配置文件)  
mybatis-config.xml(mybatis配置文件)


五)写java类
实体类:Employee.java
service接口:EmployeeService.java
service实现类:EmployeeServiceImpl.java
dao接口:EmployeeMapper.java
dao实现:我们使用的是文件实现
测试类:EmployeeServiceTest.java

弄好了之后结构如下
maven系列:构建maven工程_第2张图片


六)单元测试
EmployeeServiceTest.java类中右击run-》junit测试,我们发现数据库有数据了哈,ps:程序运行过程中可能回报一个时区有关的异常(set global time_zone='+8:00';处理一下)
我们执行成功,并看下数据库,数据入库了,ok了
maven系列:构建maven工程_第3张图片
maven系列:构建maven工程_第4张图片

代码如下
EmployeeMapper.java

package com.mzlx.oa.organ.mapper;

import com.mzlx.oa.organ.model.Employee;

public interface EmployeeMapper {
        public void addEmployee(Employee employee);
        
        public Employee findEmployeeById(Long id);
}

EmployeeMapper.xml

    
  

    
    
    
            INSERT INTO employee(name,age) VALUES(#{name},#{age})
    
    
      
    
  

Employee.java

package com.mzlx.oa.organ.model;

public class Employee {
        private Long id;
        private String name;
        private Integer age;

        public Long getId() {
                return id;
        }

        public void setId(Long id) {
                this.id = id;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public Integer getAge() {
                return age;
        }

        public void setAge(Integer age) {
                this.age = age;
        }

}

EmployeeService.java

package com.mzlx.oa.organ.service;

import com.mzlx.oa.organ.model.Employee;

public interface EmployeeService {

        public void addEmployee(Employee employee);
        
        public Employee findEmployeeById(Long id);
        
}

EmployeeServiceImpl .java

package com.mzlx.oa.organ.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mzlx.oa.organ.mapper.EmployeeMapper;
import com.mzlx.oa.organ.model.Employee;
import com.mzlx.oa.organ.service.EmployeeService;

@Service("employeeService")
public class EmployeeServiceImpl implements EmployeeService {

        @Autowired
        private EmployeeMapper employeeMapper;
        
        public void addEmployee(Employee employee) {
                employeeMapper.addEmployee(employee); 
        }

        public Employee findEmployeeById(Long id) {
                return employeeMapper.findEmployeeById(id);
        }

}

EmployeeServiceTest.java

package com.mzlx.oa.organ.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.mzlx.oa.organ.model.Employee;

@ContextConfiguration(locations = {"classpath:application-organ.xml"})  
@RunWith(SpringJUnit4ClassRunner.class)  
public class EmployeeServiceTest {
        
        @Autowired
        private EmployeeService employeeService;
        
        @Test
        public void testAddEmployee() {
                Employee employee = new Employee();
                employee.setName("测试");
                employee.setAge(20);
                employeeService.addEmployee(employee);
        }
}

配置文件
application-organ.xml【心细的童鞋可能注意到了,有的地方使用classpath,有的地方使用了classpath*,这是有区别的,其中classpath:只会到你的class路径中查找找文件。classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。

  
  
       
         
       
          
              
               classpath*:jdbc.properties   
              
          
      
      
      
      
          
          
          
          
      
    
                  
      
          
            
          
     
         
          
      
          
      
          
      
      

jdbc.properties(注意,mysql8的驱动跟5.7以及之前的不一样哦)

#jdbc.driverClassName=com.mysql.jdbc.Driver  
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/oa  
jdbc.username=root
jdbc.password=123123123

log4j.properties

log4j.rootLogger=DEBUG,Console,Stdout  
   
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
  
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG   

mybatis-config.xml

    
    
      

补充一下,前面我们使用的是直接运行测试,实际工作中还是看是否能生成可行性jar包
右击项目-》run-》Run Configurations-》配置一下-》run
maven系列:构建maven工程_第5张图片

如果出现BUILD SUCCESS,则表示编译成功
不过上面的代码肯定是失败的,为啥呢,这是一个项目,再也不是一个普通的java类了,所以相关依赖都需要打包才可以呢
解决方案:在pom.xml文件中添加如下标签代码


                
                        
                                src/main/java
                                
                                        **/*.xml
                                
                                true
                        
                        
                                src/main/resources
                                
                                        **/*.xml
                                        **/*.properties
                                
                                true
                        
                
        

嗯,之后再run,出现BUILD SUCCESS,编译成功

你可能感兴趣的:(maven)