spring-boot-route(7)jdbcTemplate操作データベースを統合します

コンテンツの一部では、Restfulインターフェイスの準備とインターフェイスドキュメントの生成について学びました。インターフェイスデータを永続的に保存する必要があります。このパートでは、主にデータを保存するためのいくつかの永続的なフレームワークについて学習します。このセクションでは、デモンストレーションデータベースとしてmysqlを例として使用します。

最初にデータベース操作に接続し始めたときは、データベース操作にJDBCを使用していましたが、接続を作成する必要があるたびに、接続を閉じるのは非常に面倒です。SpringはJDBCを新しいフレームワークであるJdbcTemplateにカプセル化するだけです。

プロジェクトの建設

1mysqlの依存関係を追加します

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

2.jdbcTemplate依存関係を追加します

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

3.mysqlを構成します

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/simple_fast?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true
    username: root
    password: root

簡単操作データベース

studentJdbcTemplateの一般的な機能をテストするために、新しいテーブル作成します表のステートメントは次のとおりです。

CREATE TABLE `student` (
   `student_id` int(30) NOT NULL,
   `age` int(1) DEFAULT NULL COMMENT '年龄',
   `name` varchar(45) DEFAULT NULL COMMENT '姓名',
   `sex` int(1) DEFAULT NULL COMMENT '性别:1:男,2:女,0:未知',
   `create_time` datetime DEFAULT NULL COMMENT '创建时间',
   `status` int(1) DEFAULT NULL COMMENT '状态:1:正常,-1:删除',
   PRIMARY KEY (`student_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='学生表'

対応するエンティティクラスは次のとおりです。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class StudentBean implements Serializable {

    private static final long serialVersionUID = 4618004018169112427L;

    private Integer studentId;
    private Integer age;
    private String name;
    private Integer sex;
    private Date createTime;
    private Integer status;
}

JdbcTemplateは、比較的完全なデータベース操作APIを提供します。日常の開発で一般的に使用されるAPIは、主に2つのカテゴリに分類されます。

  • クエリ与クエリXXX
  • update与batchUpdate

JdbcTemplateの使用も非常に簡単で、注入を使用できます。

@Autowired
private JdbcTemplate jdbcTemplate;

1単一のエンティティをクエリします

public StudentBean getStudent(int status){
    String sql = "select * from student where status = ? limit 1";
    return jdbcTemplate.queryForObject(sql,new Object[]{status},new BeanPropertyRowMapper<>(StudentBean.class));
}

2リストコレクションをクエリします

public List<StudentBean> studentBeanList(int status){
    String sql = "select * from student where status = ?";
    return  jdbcTemplate.query(sql,new Object[]{status},new BeanPropertyRowMapper<>(StudentBean.class));
}

3.削除操作

public int deleteStudent(int status){
    String sql = "delete from student where status = 0";
    return jdbcTemplate.update(sql);
}

4.更新操作

public int updateStudent(int studentId,String name){
    String sql = "update student set name = ? where student_id = ?";
    return jdbcTemplate.update(sql,new Object[]{name,studentId});
}

5.挿入操作

public int addStudent(){
    String sql = "insert into student(student_id,age,name,status) values(?,?,?,?)";
    return jdbcTemplate.update(sql,new Object[]{30,18,"Java旅途",0});
}

6.バルクインサート

JdbcTemplateは、バッチ挿入用のAPIを提供します。データベースでの操作を減らし、挿入効率を向上させるために、挿入されるデータはバッチでバッファーに配置され、複数のデータが一度にバッチで挿入されます。

public int batchAddStudent(){

    // 构造list集合
    List<StudentBean> studentBeanList = new ArrayList<>();
    StudentBean studentBean = new StudentBean(31, 31, "Java旅途", 1, new Date(), 1);
    StudentBean studentBean1 = new StudentBean(32, 32, "javatrip", 1, new Date(), 1);
    studentBeanList.add(studentBean);
    studentBeanList.add(studentBean1);
    String sql = "insert into student values(?,?,?,?,?,?)";

    int[] ints = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException {
            StudentBean student = studentBeanList.get(i);
            ps.setInt(1, student.getStudentId());
            ps.setInt(2, student.getAge());
            ps.setString(3, student.getName());
            ps.setInt(4, student.getSex());
            ps.setDate(5,new java.sql.Date(System.currentTimeMillis()));
            ps.setInt(6, student.getStatus());
        }

        @Override
        public int getBatchSize() {
            return studentBeanList.size();
        }
    });
    return ints.length;
}

上記はいくつかの簡単な例を示しています。より詳細な使用法が必要な場合は、公式のJdbcTemplateAPIを参照してください。JdbcTemplateは、初心者にとって比較的簡単なフレームワークであり、使用するのにも非常に便利です。ただし、いくつかの欠点があります。sqlをjavaコードにハードコードします。sqlを変更する必要がある場合は、javaコードを再コンパイルする必要がありますが、これはメンテナンスに役立ちません。

これは、spring-boot-routeシリーズの7番目の記事です。このシリーズの記事は比較的単純です。主な目的は、SpringBootを初めて使用する学生が体系的に理解できるようにすることです。この記事は私のgithub含まれています、ようこそ友達star

githubhttps//github.com/binzh303/spring-boot-route

注意してください、迷子にならないでください

あなたが良いエッセイを感じたら、注意を歓迎し親指を立てコレクション、あなたのサポートは私の創造力です、ありがとう。

記事の書き方に問題がありましたら、けちなことはしないでください。メッセージを残して指摘してください。時間内に確認・修正させていただきます。

あなたはより深く私を知りたい場合は、「を検索することができますJavaのジャーニーの」微信従うこと。1024」と返信して、学習ビデオと絶妙な電子書籍を入手してください毎日7時30分に時間通りに技術記事をプッシュして、あなたが仕事に行く途中で一人ではないようにし、あなたのハードパワーを向上させるのに役立つ毎月の本の配達活動があります!

おすすめ

転載: blog.51cto.com/14820531/2540264