コンテンツの一部では、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
簡単操作データベース
student
JdbcTemplateの一般的な機能をテストするために、新しいテーブルを作成します。表のステートメントは次のとおりです。
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
!
github:https://github.com/binzh303/spring-boot-route
注意してください、迷子にならないでください
あなたが良いエッセイを感じたら、注意を歓迎し、親指を立て、コレクション、あなたのサポートは私の創造力です、ありがとう。
記事の書き方に問題がありましたら、けちなことはしないでください。メッセージを残して指摘してください。時間内に確認・修正させていただきます。
あなたはより深く私を知りたい場合は、「を検索することができますJavaのジャーニーの」微信従うこと。「1024」と返信して、学習ビデオと絶妙な電子書籍を入手してください。毎日7時30分に時間通りに技術記事をプッシュして、あなたが仕事に行く途中で一人ではないようにし、あなたのハードパワーを向上させるのに役立つ毎月の本の配達活動があります!