目次
https://gitee.com/cxy-xupeng/spring-boot-test.git
デフォルトでは、SpringBootは、Spring Dataを統合し、多数の自動構成を追加し、多くの設定をシールドする統合処理方法を採用しています。
gitアドレス:
https://gitee.com/cxy-xupeng/spring-boot-test.git
1.データベースに接続して、アクセスできるようにします
最初にプロジェクトを作成しましょう
WebでSpringWebを選択し、SQLでJDBCおよびMySQLドライバーを選択します
プロジェクトを作成すると、次のドライバーが導入されたことがわかります。
また、以前のデータベースも使用します。
目次:
今回はapplication.propertiesを使用せず、application.ymlを使用します。
spring:
datasource:
username: root
password: xp880000
url: jdbc:mysql://localhost:3306/xupeng?serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
测试类Springboot05DataJdbcApplicationTests
@SpringBootTest
@RunWith(SpringRunner.class)
public class Springboot05DataJdbcApplicationTests {
@Autowired
public DataSource dataSource;
@Test
public void contextLoads() throws SQLException {
System.out.println(dataSource.getClass());
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
}
注:次のようにエラーを開始した場合
警告:ランナーorg.junit.internal.runners.ErrorReportingRunner(クラスcom.xupeng.Springboot05DataJdbcApplicationTestsで使用)はフィルタリングをサポートしていないため、完全に実行されます。
import org.junit.Test;
@Testに対応するガイドパッケージをこれに置き換えることを忘れないでください
結果:
私たちはクラスを書いています:
HelloController:
@Controller
public class HelloController {
@Autowired
JdbcTemplate jdbcTemplate;
@ResponseBody
@RequestMapping("/query")
public Map<String,Object> map(){
List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from account");
return list.get(0);
}
}
データベーステーブルアカウント:
結果:
2.基本的なJDBCとデータソースを統合します
まず、ディレクトリ構造を見てください。
1.ドルイドデータソースを導入する
pom.xml:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>
application.yml:タイプを追加してデータソースを設定し、以下のドルイドのいくつかの属性を設定します
spring:
datasource:
username: root
password: xp880000
url: jdbc:mysql://localhost:3306/xupeng?serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
DruidConfig:フィルターの構成
package com.xupeng.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
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.Arrays;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
//配置Druid监控
//1.配置一个管理后台的servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
Map<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","192.168.15.21");
bean.setInitParameters(initParams);
return bean;
}
//2.配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
結果を確認します。まず、自分で設定した管理バックグラウンドサーブレットに移動します。ログイン名とパスワードは、上記で自分で設定します。
次に、クエリを実行した後、SQLモニタリングを確認します。
3、mybatisを統合する
最初にディレクトリを見てください:
ユーザー
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
UserMapper
public interface UserMapper {
List<User> getAllUser();
}
UserMapper.xml(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.xupeng.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.xupeng.domain.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="password" property="password" jdbcType="VARCHAR" />
</resultMap>
<select id="getAllUser" resultMap="BaseResultMap">
select * from user
</select>
</mapper>
DruidConfig
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
//配置Druid监控
//1.配置一个管理后台的servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
Map<String,String> initParams = new HashMap<>();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认就是允许所有访问
initParams.put("deny","192.168.15.21");
bean.setInitParameters(initParams);
return bean;
}
//2.配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
UserService
public interface UserService {
List<User> getAllUser();
}
UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public List<User> getAllUser() {
return userMapper.getAllUser();
}
}
UserController
@Controller
public class UserController {
@Autowired
UserService userService;
@RequestMapping(value = "getusers",method = RequestMethod.GET)
@ResponseBody
public List<User> getUsers(){
List<User> userList = userService.getAllUser();
return userList;
}
}
Springboot05MybatisApplication
@SpringBootApplication
@MapperScan(value = "com.xupeng.mapper")
public class Springboot05MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot05MybatisApplication.class, args);
}
}
結果:
第四に、JPAを統合する
最初にプロジェクトを構築しましょう:
最初にディレクトリを見てみましょう。
ユーザー:
package com.xupeng.entity;
import javax.persistence.*;
//使用JPA注解配置映射关系
@Entity
@Table(name = "user")//如果省略,默认表名就是user
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
private Integer id;
@Column(name = "username",length = 255)
private String username;
@Column //省略默认列名就是属性
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
UserRepository:ここで、JpaRepository <User、Integer>の背後にあるタイプを指定する必要があることに注意してください。指定しないと、エラーが報告されます。そして、クラスは直接参照することができます
package com.xupeng.repository;
import com.xupeng.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
//继承JpaRepository来完成对数据库的操作
public interface UserRepository extends JpaRepository<User,Integer> {
}
UserController
package com.xupeng.controller;
import com.xupeng.entity.User;
import com.xupeng.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
UserRepository userRepository;
@GetMapping("/user")
public List<User> getUser(){
List<User> userList = userRepository.findAll();
return userList;
}
}
結果: