1.JDBCの使用を統合します
1.プロジェクトを作成します
必要な依存関係を選択します:webおよびmysqlドライバー
2.プロジェクトを開きます
プロジェクト構成ファイル**(application.yml)**でデータベース情報を構成します
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql//localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
URLでタイムゾーンと文字エンコードを構成します。
** driver-class-name:**も以前のバージョンとは異なり、以前のバージョンはcom.mysql.cj.jdbc.Driverです。
3.アイデアを使用してmysqlデータベースに接続します
1.1。
テストでは、データベース接続をテストします
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws Exception{
/*查看获取的数据源*/
System.out.println(dataSource.getClass());
/*获取连接*/
Connection connection = dataSource.getConnection();
System.out.println(connection);
/*关闭连接*/
connection.close();
}
5.最後に、データを照会できるかどうかをテストします
コントローラを作成する
データソースと構成がJdbcTemplateに挿入されているため、JdbcTemplateを挿入できます。
ポイントを打つ!
ここにはエンティティクラスがないので、どのようにデータを取得しますか?
我々は使用することができます一覧<地図<文字列、オブジェクトを>>我々のデータをカプセル化します
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/hello")
public List<Map<String,Object>> jdbcQuery(){
String sql = "select * from customer";
List<Map<String, Object>> list_map = jdbcTemplate.queryForList(sql);
return list_map;
}
最後にhttp:// localhost:8080 / helloにアクセスします。
ポイントを打つ!
jdbcTemplateのソースコードをチェックして見てみることができます
6.最後に、追加、削除、変更、確認するだけです。
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/hello")
public List<Map<String,Object>> getUser(){
String sql = "select * from user";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
return maps;
}
@GetMapping("/addUser")
public String addUser(){
String sql = "insert into user(name,gender) values('鲁班大师','男')";
jdbcTemplate.update(sql);
return "update/ok";
}
@GetMapping("/updateUser/{id}")
public String updateUser(@PathVariable("id") int id){
String sql = "update user set name=?,gender=? where id = "+id;
Object[] objects = new Object[2];
objects[0] = "木兰";
objects[1] = "女";
jdbcTemplate.update(sql,objects);
return "update/ok";
}
@GetMapping("/delUser/{id}")
public String delUser(@PathVariable("id") int id){
String sql = "delete from user where id = "+id;
jdbcTemplate.update(sql);
return "del/ok";
}
2.Druidデータソースを統合する
1.ドルイドの依存関係をインポートします
https://mvnrepository.com/artifact/com.alibaba/druid
2. Druidデータソースを使用するには、Druidに変更することを忘れないでください
構成の変更
type: com.alibaba.druid.pool.DruidDataSource
3.テストするいくつかのパラメーターを構成しましょう。
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
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,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址: https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
3.ドルイドの力は、彼が物事を構成できることです
1.構成パッケージを作成し、構成用に以下のDruidConfig.javaを作成します
作成後、最初に@Configurationをファイルに追加します
**ポイントをノック!**ここではlog4jが使用されているため、log4jのpom依存関係をインポートする必要があります
書き込んだ後、Beanに注入する必要があります
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
@Configuration
public class DruidConfig {
/*我们想要使用在配置文件中给Druid配置的属性,那么我们就要将这个方法和配置文件绑定到一起
* 所以要将这个方法交给Bean管理,并且添加配置文件 @ConfigurationProperties
* */
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
/*后台监控 : web.xml , ServletRegistrationBean*/
/*因为 SpringBoot 内置了 Servlet容器 所以没有web.xml 替代方法:ServletRegistrationBean*/
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
/*后台需要有人登录,账号密码配置*/
Map<String, String> initParameters = new HashMap<>();
/*增加配置*/
/*配置账号密码,账号密码的key值是固定不变的 loginUsername loginPassword*/
initParameters.put("loginUsername","admin");
initParameters.put("loginPassword","123");
/*允许访问*/
initParameters.put("allow","");
/*禁止访问 后边写IP地址*/
initParameters.put("kuangshen","192.168.11.123");
bean.setInitParameters(initParameters);
return bean;
}
/*配置一个过滤器 filter*/
@Bean
public FilterRegistrationBean filterFilterRegistrationBean(){
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
/*这个是阿里巴巴的过滤器*/
bean.setFilter(new WebStatFilter());
/*可以过滤那些请求呢?*/
Map<String, String> initParameters = new HashMap<>();
/* 这些东西不进行统计 ~~ map的key值 是我们在WebStatFilter过滤器中查看源码得到的*/
initParameters.put("exclusions","*.js,*.css,/druid/**");
bean.setInitParameters(initParameters);
return bean;
}
}
4.MyBatisを統合する
1.統合パッケージ
mybatis-spring-boot-start
このパッケージは公式のSpringBootではありません
<!--mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2.データベース構成を記述してテストする
3. lombokの依存関係をインポートし、pojoクラスを記述します
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
Pojo.User类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private String gender;
}
4.マッパーインターフェイスを作成します
マッパーアノテーションは、これがマッパークラスであることを示しています
アノテーション@MapperScan( "com.kuangshen.mapper")をメインクラスに追加して、マッパーの下のすべてのクラスをスキャンすることもできます。
@Mapper/*这个注解表明了这是 mybatis 的mapper类*/
@Repository/*Dao层使用 @Repository 交给Spring */
public interface UserMapper {
/*查询所有用户*/
List<User> getAllUser();
/*查询单个用户*/
User getUserById(int id);
/*添加用户*/
void addUser(User user);
/*更改用户*/
void updateUser(User user);
/*删除用户*/
void deleteUser(int id);
}
5.mapper.xmlファイルはresourcesディレクトリに配置されます
リソースディレクトリにmybatic-> mapper-> UserMapper.xmlを作成します
** xml構成情報は、mybatisの中国語ドキュメントにあります:** https://mybatis.org/mybatis-3/zh/getting-started.html
<?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.kuangshen.mapper.UserMapper">
</mapper>
まず第一に!!まず、名前空間を独自のマッピングファイルに変更します
ymlファイルにマッパーファイルの場所を追加して構成するには!!
# 整合mybatis
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
type-aliases-package: com.kuangshen.mapper
マッパーインターフェイスに基づいてmapper.xmlファイルの作成を開始します
挿入するとき、タイプuserが渡され、名前とIDを直接書き込むだけです。user.idは必要ありません。そうでない場合は見つかりません。
<?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.kuangshen.mapper.UserMapper">
<select id="getAllUser" resultType="com.kuangshen.pojo.User">
select * from user
</select>
<select id="getUserById" resultType="com.kuangshen.pojo.User">
select * from user where id = #{
id}
</select>
<insert id="addUser" parameterType="com.kuangshen.pojo.User">
insert into user(id,name,gender) values(#{
id},#{
name},#{
gender})
</insert>
<update id="updateUser" parameterType="com.kuangshen.pojo.User">
update user set name=#{
user.name} , gender=#{
user.gender} where id=#{
user.id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id = #{
id}
</delete>
</mapper>
6.コントローラーを使用して、追加、削除、および変更のチェックを完了します
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
/*查询所有用户*/
@GetMapping("/getAllUser")
public List<User> getAllUser(){
List<User> allUser = userMapper.getAllUser();
return allUser;
}
/*根据用户ID查询用户*/
@GetMapping("/getUserById/{id}")
public String getUserById(@PathVariable("id") int id){
userMapper.getUserById(id);
return "delete OK";
}
/*添加用户*/
@GetMapping("/addUser")
public String addUser(){
User user = new User();
user.setName("王五");
user.setGender("男");
user.setId(5);
userMapper.addUser(user);
return "add OK!";
}
/*更新用户*/
@GetMapping("/updateUser")
public String updateUser(){
return "update ok !";
}
/*删除用户*/
@GetMapping("/deleteUser/{id}")
public String deleteUser(@PathVariable("id") int id){
userMapper.deleteUser(id);
return "delete OK!";
}
}