SpringBoot整合Druid
一、创建项目,选择依赖
选择Spring Web、JDBC API、MySQL Driver即可




二、在pom中引入相关依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 修改MySQL驱动版本 --> <version>5.1.26</version> <scope>runtime</scope></dependency><!-- 引入druid --><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.20</version></dependency><!-- 引入log4j --><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency><!-- 引入lombok --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>三、建库、建表、插入数据
CREATE DATABASE db_springboot_test CHARSET='utf8';USE db_springboot_test;CREATE TABLE tab_student( pk_student_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学生学号,起始值2021001', idx_student_name VARCHAR(10) COMMENT '学生姓名', idx_student_sex CHAR(1) COMMENT '学生性别', idx_student_score DOUBLE(4,1) COMMENT '学生分数') AUTO_INCREMENT 2021001 COMMENT '学生表' -- 随机向表中插入数据, 可连续执行多次INSERT INTO tab_student VALUES(NULL,SUBSTR(MD5(RAND()),1,4),IF(RAND()>0.5,'男','女'),RAND()*100);SELECT * FROM tab_student;
四、设置核心配置文件的属性
# 配置数据库连接的四大参数spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://192.168.133.139:3306/db_springboot_test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=truespring.datasource.username=rootspring.datasource.password=root# 指定连接池的类型spring.datasource.type=com.alibaba.druid.pool.DruidDataSource# 实现druid的SQL统计spring.datasource.filters=stat,wall,log4jspring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500;五、创建实体类
package cn.byuan.entity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.experimental.Accessors;import java.io.Serializable;@NoArgsConstructor// 生成无参的构造方法@AllArgsConstructor// 生成满参的构造方法@Accessors(chain = true)// 使用链式调用@Data// 自动生成get/set方法、重写toString方法等方法public class Student implements Serializable { private Integer studentId; private String studentName; private String studentSex; private Double studentScore;}六、创建dao层的StudentDao接口并实现StudentDao接口,完成与数据库的交互
接口:
package cn.byuan.dao;import cn.byuan.entity.Student;import java.util.List;public interface StudentDao {// 添加一个学生 Integer addOneStudent(Student student);// 根据主键studentId删除一个学生 Integer deleteOneStudentByStudentId(Integer studentId);// 根据主键studentId修改一个学生 Integer updateOneStudentByStudentId(Student student);// 根据主键studentId查询一个学生 Student getOneStudentByStudentId(Integer studentId);// 获取全部学生 List<Student> getAllStudent();}实现类:
package cn.byuan.dao.impl;import cn.byuan.dao.StudentDao;import cn.byuan.entity.Student;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.PreparedStatementSetter;import org.springframework.jdbc.core.RowMapper;import org.springframework.stereotype.Repository;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;@Repositorypublic class StudentDaoImpl implements StudentDao { @Autowired private JdbcTemplate jdbcTemplate;// 类似于PreparedStatement// 添加一个学生 @Override public Integer addOneStudent(Student student) { String sql="insert into tab_student values(null, ?, ?, ?)"; return jdbcTemplate.update(sql, new PreparedStatementSetter() {// 匿名内部类 @Override public void setValues(PreparedStatement preparedStatement) throws SQLException { preparedStatement.setString(1, student.getStudentName()); preparedStatement.setString(2, student.getStudentSex()); preparedStatement.setDouble(3, student.getStudentScore()); } }); }// 根据主键studentId删除一个学生 @Override public Integer deleteOneStudentByStudentId(Integer studentId) { String sql="delete from tab_student where pk_student_id=?"; return jdbcTemplate.update(sql, new PreparedStatementSetter() { @Override public void setValues(PreparedStatement preparedStatement) throws SQLException { preparedStatement.setInt(1, studentId); } }); }// 根据主键studentId修改一个学生 @Override public Integer updateOneStudentByStudentId(Student student) { String sql="update tab_student set idx_student_name=?, idx_student_sex=?, idx_student_score=? where pk_student_id=?"; return jdbcTemplate.update(sql, new PreparedStatementSetter() { @Override public void setValues(PreparedStatement preparedStatement) throws SQLException { preparedStatement.setString(1, student.getStudentName()); preparedStatement.setString(2, student.getStudentSex()); preparedStatement.setDouble(3, student.getStudentScore()); preparedStatement.setInt(4, student.getStudentId()); } }); }// 根据主键studentId查询一个学生 @Override public Student getOneStudentByStudentId(Integer studentId) { String sql="select * from tab_student where pk_student_id=?"; return jdbcTemplate.query(sql, getRowMapper(), studentId).get(0); }// 获取全部学生 @Override public List<Student> getAllStudent() { String sql="select * from tab_student"; return jdbcTemplate.query(sql, getRowMapper()); } private RowMapper<Student> getRowMapper(){// 查询所使用的RowMapper对象,这里单独拿出来提高代码复用性 return new RowMapper<Student>() { @Override public Student mapRow(ResultSet resultSet, int i) throws SQLException { Student student=new Student(); student.setStudentId(resultSet.getInt("pk_student_id")) .setStudentName(resultSet.getString("idx_student_name")) .setStudentSex(resultSet.getString("idx_student_sex")) .setStudentScore(resultSet.getDouble("idx_student_score")); return student; } }; }}七、创建一个配置类,配置druid的后台参数
package cn.byuan.config;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import java.util.HashMap;@Configurationpublic class DruidConfig { // 创建数据源对象 @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource getDataSource(){ return new DruidDataSource(); } // 创建ServletRegistrationBean @Bean public ServletRegistrationBean getServletRegistrationBean(){// 创建bean时指定后台服务的url ServletRegistrationBean<StatViewServlet> registrationBean=new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");// 创建一个map,指定账号密码 HashMap<String, String> userMap=new HashMap<>(); userMap.put("loginUsername", "Godfery"); userMap.put("loginPassword", "123456");// 指定允许的用户 userMap.put("allow", "");// 将map与bean进行绑定 registrationBean.setInitParameters(userMap); return registrationBean; }}八、创建controller层
package cn.byuan.controller;import cn.byuan.dao.StudentDao;import cn.byuan.entity.Student;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestCo......原文转载:http://www.shaoqun.com/a/853314.html
跨境电商:https://www.ikjzd.com/
ryder:https://www.ikjzd.com/w/1264.html
taofenba:https://www.ikjzd.com/w/1725
宝贝格子:https://www.ikjzd.com/w/1322
SpringBoot整合Druid一、创建项目,选择依赖选择SpringWeb、JDBCAPI、MySQLDriver即可二、在pom中引入相关依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><!--修改MySQL驱
孙琦:https://www.ikjzd.com/w/1638
中国与阿拉伯将继续加强跨境电商合作:https://www.ikjzd.com/articles/106993
每天分析运营数据的你,关心过时间成本吗?:https://www.ikjzd.com/articles/106994
图文实操:手把手教你在Craigslist寻找测评人!:https://www.ikjzd.com/articles/106995
5种堪称跨境电商神器的免费工具(含临时手机号/临时邮箱工具):https://www.ikjzd.com/articles/106999
少妇口述:老公不在 我和陌生男子激情做爱3次:http://lady.shaoqun.com/a/78156.html
口述上面吃奶下面爱爱 被做爽了的细节过程:http://lady.shaoqun.com/a/247974.html
校花被校长啪到腿软 啊校长你慢点啊好大啊:http://www.30bags.com/m/a/249791.html
宁波方特东方欲晓在哪里,怎么走?:http://www.30bags.com/a/478645.html
宁波方特东方欲晓门票2021年7月价格:http://www.30bags.com/a/478646.html
2021深圳首届航展时间:http://www.30bags.com/a/478647.html
2021深圳广东智展展览展会延期:http://www.30bags.com/a/478648.html
没有评论:
发表评论