springboot jpa 及logback的配置

结构图


1.pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yutu.jpa</groupId>
  <artifactId>jpa</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>com.yutu.jpa</name>
  <description>ceshi</description>
   <parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.5.2.RELEASE</version>
</parent>
  <dependencies>
    <!-- spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        
        <!-- <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency> -->
         
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 使用mysql作为数据库,这里已经使用了H2-->
        
        <dependency> 
            <groupId>mysql</groupId> 
            <artifactId>mysql-connector-java</artifactId> 
        </dependency> 
        
        <!-- 连接池 -->
        <!-- Spring Boot默认使用Tomcat连接池 -->
        <!-- 也可以通过配置使用其他连接池 -->
        <!-- 
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <scope>compile</scope>
        </dependency>
         -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
   <dependency>
			<groupId>com.googlecode.log4jdbc</groupId>
			<artifactId>log4jdbc</artifactId>
			<version>1.2</version>
		</dependency>
  </dependencies>
  
  <build>
  <resources>
			<resource>
				<directory>src/main/webapp</directory>
				<targetPath>META-INF/resources</targetPath>
				<includes>
					<include>**/**</include>
				</includes>	
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/**</include>
				</includes>
				<filtering>false</filtering>
			</resource>
			 <resource>  
                <directory>src/main/java</directory>  
                <includes>  
                    <include>**/*.properties</include>  
                    <include>**/*.xml</include>  
                </includes>   
                <filtering>false</filtering>  
            </resource>
		</resources>
  </build>
</project>

2.application

server.port=8089


spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dangjian_DataCenter?allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.database=MYSQL


spring.jpa.show-sql=true
#jpaconfiguration
spring.jpa.hibernate.ddl-auto=update


logging.level.org.hibernate.SQL: DEBUG


# config logback
logging.config=classpath:logback-spring.xml
logging.path=/workspace/jpa/jpa-test/log

3.logback-spring.xml

<configuration scan="true" scanPeriod="10 seconds">
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <appender name="INFO_FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
                -%msg%n
            </Pattern>
        </layout>
    </appender>

    <appender name="ERROR_FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>${LOG_PATH}/error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.log.%i
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
                -%msg%n

            </Pattern>
        </layout>
    </appender>

    <!-- hibernate日志输入 -->
  <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"  />
  <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="TRACE"   />
  <logger name="org.hibernate.SQL" level="INFO" /> 
  <logger name="org.hibernate.engine.QueryParameters" level="INFO" />
  <logger name="org.hibernate.engine.query.HQLQueryPlan" level="INFO"  />
    <root level="INFO">
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>

</configuration>

4.代码

(1)enerty层

package jpa.bean;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="t_weixin")
public class TWeiXin {
    private Integer id;

    private String href;

    private String urlname;

    private Date updatetime;

    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }

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

    public String getHref() {
        return href;
    }

    public void setHref(String href) {
        this.href = href == null ? null : href.trim();
    }

    public String getUrlname() {
        return urlname;
    }

    public void setUrlname(String urlname) {
        this.urlname = urlname == null ? null : urlname.trim();
    }

    public Date getUpdatetime() {
        return updatetime;
    }

    public void setUpdatetime(Date updatetime) {
        this.updatetime = updatetime;
    }
}

(2)mapper层

package jpa.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import jpa.bean.TWeiXin;

public interface TWeiXinDao extends JpaRepository<TWeiXin, Integer>{
	
	 @Query(value = "select * from t_weixin ", nativeQuery = true)
	 List<TWeiXin> select();
	// @Modifying 
	 @Query(value = "insert into t_weixin (href,urlname,updatetime) values (:href,:urlname,:updatetime)" ,nativeQuery = true)
	 int insert(@Param("href")String href,@Param("urlname")String urlname,@Param("updatetime")String updatetime);
}

(3)service层

package jpa.service;

import java.util.List;

import jpa.bean.TWeiXin;

public interface TWeinXinService {
   List<TWeiXin> select();
   int insert(String href,String urlname,String updatetime);
   
}
package jpa.service.impl;

import java.util.List;

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

import jpa.bean.TWeiXin;
import jpa.dao.TWeiXinDao;

@Service
@Transactional
public class TWeinXinServiceImpl implements jpa.service.TWeinXinService {

	@Autowired
	private TWeiXinDao tw;
	@Override
	public List<TWeiXin> select() {
		// TODO Auto-generated method stub
		return tw.select();
	}
	@Override
	public int insert(String href, String urlname, String updatetime) {
		// TODO Auto-generated method stub
		return tw.insert(href, urlname, updatetime);
	}
	

}

(5)controller层

package jpa.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import ch.qos.logback.core.net.SyslogOutputStream;
import jpa.bean.TWeiXin;
import jpa.service.impl.TWeinXinServiceImpl;

@RestController
public class TWeiXinController {
  @Autowired
  private TWeinXinServiceImpl twImpl;
  
  @RequestMapping("/findlist")
  public String findlist(HttpServletResponse response,HttpServletRequest request){
	List<TWeiXin> list =   twImpl.select();

	String[] s = {} ;
	//list.forEach(i-> System.out.println(i.getUrlname()));
	return list.toString();
  }
  @RequestMapping("/insert")
  public int insert(HttpServletRequest request,HttpServletResponse response){
	  String href = request.getParameter("href");
	  String urlname = request.getParameter("urlname");
	  String updatetime = new SimpleDateFormat("YYYY-MM-dd").format(new Date());
	  return twImpl.insert(href,urlname,updatetime);
	  
  }
}

(6)主类

package jpa;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;

@Configuration
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(Application.class, args);
	}

}

日志输出结果



源码:https://download.csdn.net/download/qq_35201754/10530794

猜你喜欢

转载自blog.csdn.net/qq_35201754/article/details/80973301