结构图
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);
}
}
日志输出结果