接上篇http://blog.csdn.net/hcmony/article/details/77854948
1,pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.hcmony</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>-->
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<!-- 导入dbcp2的jar包,用来在applicationContext.xml中配置数据库 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2,application-hcmony.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.çspringframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
default-autowire="byName" default-lazy-init="false">
<context:annotation-config/>
<context:component-scan base-package="com.hcmony"/>
<bean id="ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/hcmony?characterEncoding=utf8"/>
<!-- 数据库用户名 -->
<property name="username" value="root"/>
<!-- 密码 -->
<property name="password" value="root"/>
<!-- 连接初始值,连接池启动时创建的连接数量的初始值 -->
<property name="initialSize" value="10"/>
<!-- 最大空闲值.当经过一个高峰时间后,
连接池可以慢慢将已经用不到的连接慢慢释放一部分,
一直减少到maxIdle为止 ,0时无限制 -->
<property name="maxIdle" value="50"/>
<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
<property name="maxTotal" value="50"/>
<!-- 最大等待时间 单位为毫秒-->
<property name="maxWaitMillis" value="10000"/>
<!-- 自动提交 -->
<property name="defaultAutoCommit" value="false"/>
<!-- 失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程 -->
<property name="timeBetweenEvictionRunsMillis" value="3600000"/>
<!-- 大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟 -->
<property name="minEvictableIdleTimeMillis" value="3600000"/>
<!-- 是否自我中断, 默认是 false -->
<property name="removeAbandonedOnMaintenance" value="true"/>
<!-- 几秒后会自我中断, removeAbandoned 必须为 true -->
<property name="removeAbandonedTimeout" value="10"/>
<!-- 是否记录中断事件, 默认为 false -->
<property name="logAbandoned" value="true"/>
</bean>
<!-- sqlsession工厂配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<tx:annotation-driven/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="ds"/>
<property name="rollbackOnCommitFailure" value="true"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
</beans>
3,log4j.properties
log4j.rootLogger=INFO,Console,File
#控制台日志
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
#普通文件日志,文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File=org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File=logs/hcmony.log
#定义文件最大大小
log4j.appender.File.MaxFileSize=10MB
#输出日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
#设置编码
log4j.appender.LOGFILE.encoding=UTF-8
4,application.properties
server.port=8081
5,SpringbootDemoApplication
package com.hcmony;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
@MapperScan(basePackages = "com/hcmony/mapper")
@ImportResource({"classpath:application-hcmony.xml"})
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
6,UserController
package com.hcmony.controller;
import com.hcmony.model.User;
import com.hcmony.service.UserService;
import com.hcmony.utils.CodeIdEnum;
import com.hcmony.utils.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by hcmony on 2017/9/1.
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findUser")
public ResponseData findUser(Integer id){
System.out.println("-----------------");
User user = userService.findUser(id);
System.out.println("user的id是:"+user.getId());
System.out.println("user的名字是:"+user.getName());
return new ResponseData(CodeIdEnum.Success,user);
}
@RequestMapping("/saveUser")
public void saveUser(User user) throws Exception{
System.out.println("-----------------");
Integer num = userService.saveUser(user);
if(num!=null&&num>0){
System.out.println("保存成功了!");
}else {
System.out.println("保存失败了!");
}
}
}
7,UserMapper
package com.hcmony.mapper;
import com.hcmony.model.User;
/**
* Created by hcmony on 2017/9/1.
*/
public interface UserMapper {
public Integer save(User user);
public User findById(Integer id);
}
8,UserService
package com.hcmony.service;
import com.hcmony.model.User;
/**
* Created by hcmony on 2017/9/1.
*/
public interface UserService {
public Integer saveUser(User user)throws Exception;
public User findUser(Integer id);
}
9,UserServiceImpl
package com.hcmony.service.impl;
import com.hcmony.mapper.UserMapper;
import com.hcmony.model.User;
import com.hcmony.service.UserService;
import com.hcmony.utils.ExceptionRuntime;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by hcmony on 2017/9/1.
*/
@Service
public class UserServiceImpl implements UserService {
private static Logger logger = Logger.getLogger(UserService.class);
@Autowired
private UserMapper userMapper;
@Autowired
private UserImpl userImpl;
@Transactional(propagation = Propagation.REQUIRED)
@Override
public Integer saveUser(User user) throws Exception{
try {
logger.info("保存用户:"+user.getName());
Integer num = userMapper.save(user);
user.setName("失败前的"+user.getName());
System.out.println("saveUser--------------");
return num;
}catch(RuntimeException e) {
logger.error("保存用户失败");
throw new ExceptionRuntime();
}catch(Exception e){
logger.error("保存用户失败");
throw new Exception();
}
}
@Override
public User findUser(Integer id) {
try {
return userMapper.findById(id);
}catch (Exception e){
logger.error("查询用户失败",e);
}
return null;
}
}
10,User
package com.hcmony.model;
/**
* Created by hcmony on 2017/9/1.
*/
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
11,UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.hcmony.mapper.UserMapper" >
<resultMap id="resultMap" type="com.hcmony.model.User" >
<constructor >
<idArg column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="name" jdbcType="VARCHAR" javaType="java.lang.String" />
</constructor>
</resultMap>
<sql id="sql" >
id, name
</sql>
<select id="findById" resultType="com.hcmony.model.User" parameterType="java.lang.Integer" >
select
<include refid="sql" />
from user
where id = #{id}
</select>
<insert id="save" parameterType="com.hcmony.model.User">
insert into user (id, name)
values (#{id}, #{name})
</insert>
</mapper>
springcloud 源代码 https://github.com/hcmony/springcloud.git
idea创建maven,spring,springmvc,mybatis,项目(二)
idea创建maven,spring,springmvc,mybatis,项目(三)
idea创建springboot项目图文教程(配置文件)(五)
idea创建springcloud项目图文教程(EurekaServer注册中心)(六)
idea创建springcloud项目图文教程(创建服务提供者)(七)
idea创建springcloud项目图文教程(创建消费者)(八)
idea创建springcloud项目图文教程(Feign实现负载均衡)(九)
idea创建springcloud项目图文教程(config 实现配置中心)(十一)
idea创建springcloud项目图文教程(bus 消息总线)(十二)
该博客是Springboot项目配置的图文教程,包括pom.xml配置,application.properties与log4j.properties的设置,以及SpringbootDemoApplication、UserController、UserMapper和服务层的详细步骤。此外,还提供了springcloud项目的GitHub源代码链接,适合初学者逐步学习。
2万+

被折叠的 条评论
为什么被折叠?



