妹の詳細なSpringBootチュートリアル:はじめにMysqlとDruidのデータソースの接続とMyBatisの統合(3)

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!";
    }
}


おすすめ

転載: blog.csdn.net/weixin_54707168/article/details/113931024