个⼈⽹站的搭建(三)——留⾔功能(springboot+mysql) 个⼈⽹站的页⾯上有⼀个留⾔功能,现在实现⼀下。
⼀、设计数据库
⽬前只有⼀张留⾔的数据表,⽐较简单。
CREATE TABLE `message` (
`id` varchar(32) NOT NULL COMMENT '主键',
`fullName` varchar(128) DEFAULT NULL COMMENT '⽤户姓名',
`phoneNumber` varchar(32) DEFAULT NULL COMMENT '电话',
`emailAddress` varchar(32) DEFAULT NULL COMMENT '邮箱',
`subject` varchar(256) DEFAULT NULL COMMENT '简要信息',
`message` varchar(1024) DEFAULT NULL COMMENT '留⾔信息',
`user_ip` varchar(128) DEFAULT NULL COMMENT '⽤户ip',
`create_user` varchar(32) DEFAULT NULL COMMENT '创建者',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`del_flag` int(1) DEFAULT '0' COMMENT '数据状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
⼆、⼯程配置
1.引⼊依赖包
<!--mybatis -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId&batis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId&batis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!--druid -->
<!--DRUID是阿⾥巴巴开源平台上⼀个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加⼊了⽇志监控,-->
<!--可以很好的监控DB池连接和SQL的执⾏情况,可以说是针对监控⽽⽣的DB连接池(据说是⽬前最好的连接池,不知道速度有没有BoneCP快)。-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.28</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
注:这⾥⽤到了阿⾥的数据库连接池。
l⽂件
我们为数据库连接专门写⼀个配置⽂件,命名为l。如下:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: sql.jdbc.Driver
url: jdbc:mysql://localhost:3306/boke?useUnicode=true&characterEncoding=utf8
username: root
password: 1234
initialSize: 1
minIdle: 3
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置⼀个连接在池中最⼩⽣存的时间,单位是毫秒
minEvictableIdleTimeMillis: 30000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的⼤⼩
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界⾯sql⽆法统计,'wall'⽤于防⽕墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: Sql=true;druid.stat.slowSqlMillis=5000
3.在l⽂件中增加数据库配置。
spring:
profiles:
active: dev
4.使⽤mabatis+generator插件⽣成相关代码。具体的操作步骤:
5.设计⼀个RestUtil.java。⽤于返回信息。如下:
public class RestUtil {
private int status;
private String msg;
private Object data;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
@Override
public String toString() {
return "RestUtil{" +
"status=" + status +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
5.这⾥⽣成的代码还需要完善⼀下,⾃⼰编写MessageControlle、MessageService极其实现类。如下:
@RestController
@RequestMapping("/message")
public class MessageControlle {
@Autowired
private MessageService messageService;
@PostMapping("/insert")
public RestUtil insert(HttpServletRequest request, Message message) throws Exception{ RestUtil restUtil = new RestUtil();
String IP = IpAddr(request);
message.setUserIp(IP);
if (messageService.insertSelective(message) > 0) {
restUtil.setMsg("我会尽快回复您的留⾔");
restUtil.setStatus(20000);
} else {
restUtil.setMsg("未知错误,请联系中边");
restUtil.setStatus(20001);
restUtil.setData(message);
}
return restUtil;
}
}
public interface MessageService {
int insertSelective(Message record);
}
@Service
public class MessageServiceImpl implements MessageService{
@Autowired
private MessageMapper messageMapper;
@Override
public int insertSelective(Message record) {
return messageMapper.insertSelective(record);
}
}
l⽂件增加⾃增配置
<insert id="insertSelective" parameterType="ity.Message" >
<selectKey keyProperty="id" resultType="string" order="BEFORE">
select replace(uuid(), '-', '') as id from dual
</selectKey>
insert into message
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
</if>
<if test="fullname != null" >
fullName,
</if>
<if test="phonenumber != null" >
phoneNumber,
</if>
springboot中文<if test="emailaddress != null" >
emailAddress,
</if>
<if test="subject != null" >
subject,
</if>
<if test="message != null" >
message,
</if>
<if test="userIp != null" >
user_ip,
</if>
<if test="createUser != null" >
create_user,
</if>
<if test="createTime != null" >
create_time,
</if>
<if test="delFlag != null" >
del_flag,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," > <if test="id != null" >
#{id,jdbcType=VARCHAR},
</if>
<if test="fullname != null" >
#{fullname,jdbcType=VARCHAR},
</if>
<if test="phonenumber != null" >
#{phonenumber,jdbcType=VARCHAR},
</if>
<if test="emailaddress != null" >
#{emailaddress,jdbcType=VARCHAR},
</if>
<if test="subject != null" >
#{subject,jdbcType=VARCHAR},
</if>
<if test="message != null" >
#{message,jdbcType=VARCHAR},
</if>
<if test="userIp != null" >
#{userIp,jdbcType=VARCHAR},
</if>
<if test="createUser != null" >
#{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null" >
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null" >
#{delFlag,jdbcType=INTEGER},
</if>
</trim>
</insert>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论