1.MyBatisプロジェクトを作成します
Mavenプロジェクトを作成するには、グループIDにcn.tedu.mybatis、アーティファクトIDにMyBatis、Packaingにwarを使用します(jarを選択することもできます)。
プロジェクトの作成後、次のことを行う必要があります。web.xmlファイルを生成する、pom.xmlに依存関係を追加する、前のプロジェクトから現在のプロジェクトにspring-mvc.xmlをコピーする、Tomcatオペレーティング環境を追加する(この場合は不要な場合があります)、前のシーケンスを開くプロジェクトのweb.xmlで、DispatcherServletとCharacterEncodingFilterの構成を現在のプロジェクトにコピーします。
今回は、依存関係を追加する必要があります。
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<!-- MyBatis整合Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.1</version>
</dependency>
<!-- SpringJDBC -->
<!-- 注意:与当前项目使用的其它spring依赖保持相同的版本号 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<!-- mysql连接 -->
<!-- 可选版本号:8.0.12~8.0.16,5.1.4~5.1.6 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
次に、spring-mvc.xmlをコピーしてspring-dao.xmlを取得し、spring-dao.xmlファイルの構成を削除します。
2.データベース接続
src / main / resourcesの下にdb.propertiesファイルを作成して、データベース接続に関する関連情報を構成します。
url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
driver=com.mysql.cj.jdbc.Driver
username=root
password=root
initialSize=2
maxActive=10
ドライバー属性を構成するときは、使用するmysql-connector-javaのバージョンに注意する必要があります。バージョン5.xを使用している場合、6.x以降を使用している場合、属性値はcom.mysql.jdbc.Driverである必要があります。バージョン、属性値はcom.mysql.cj.jdbc.Driverである必要があります。使用する値がわからない場合は、mysql-connector-javaのjarファイルを展開して確認できます。さらに、jarパッケージにはMETA-INF / services / java.sql.Driverファイルがあり、jarパッケージを使用するときに使用する必要があるDriverクラスが記録されています。
バージョン6.x以降のmysql-connector-javaを使用している場合は、データベースに接続するようにURLを構成するときに、serverTimezoneパラメーターの値を明示的に設定する必要があります。中国本土で利用可能な値は、アジア/上海とアジア/チョンチンです。
spring-dao.xmlに構成を追加する必要があります。上記のdb.propertiesの構成情報をお読みください。
<util:properties id="config" location="classpath:db.properties" />
次に、データベースに接続するときに使用されるデータソースはBasicDataSourceになります。上記で読み取ったデータベース接続情報を、BasicDataSourceのプロパティに挿入する必要があります。
<!-- 配置数据源,保证其能够连接数据库 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="#{config.url}" />
<property name="driverClassName" value="#{config.driver}" />
<property name="username" value="#{config.username}" />
<property name="password" value="#{config.password}" />
<property name="initialSize" value="#{config.initialSize}" />
<property name="maxActive" value="#{config.maxActive}" />
</bean>
次に、テストクラスでユニットテストを記述して実行し、構成が正しいかどうかを確認できます。
public class Tests {
ClassPathXmlApplicationContext ac;
@Before
public void doBefore() {
ac = new ClassPathXmlApplicationContext(
"spring-dao.xml");
}
@After
public void doAfter() {
ac.close();
}
@Test
public void getConnection() throws SQLException {
BasicDataSource dataSource = ac.getBean("dataSource", BasicDataSource.class);
Connection conn = dataSource.getConnection();
System.out.println(conn);
}
}
3.インターフェースと抽象的なメソッド
暫定目標:MyBatisを使用して、新しいユーザーデータをデータテーブルに挿入します。
MyBatisを使用する場合は、各関数に対応する抽象メソッドを定義する必要があり、これらの抽象メソッドはインターフェイスで定義する必要があります。
まず、cn.tedu.mybatis.UserMapperインターフェイスファイルを作成してから、インターフェイスに「ユーザーデータを挿入する」という抽象メソッドを定義する必要があります。抽象メソッドの設計原則:
- タイプの追加、削除、または変更の操作を実行する必要がある場合は、メソッドの戻り値としてIntegerを使用します。これは、操作の成功を判断するために使用できる「影響を受ける行の数」を示します。または、intとして設計することも、設計することもできます。無効とは、影響を受ける行の数を気にしないことを意味します。
- メソッド名はカスタマイズでき、オーバーロードすることはできません。
- パラメータリストは、必要なパラメータに応じて決定されます。以前にJDBCを学習するときに、SQLの疑問符を参照して、どのパラメータを書き込むことができます。
「ユーザーデータの挿入」のために実行する必要のあるSQLステートメントは大まかに次のとおりです。
insert into (username, password, age, phone, email) values (?,?,?,?,?)
抽象メソッドは5つのパラメーターを書き込む必要があります。後でデータテーブルにフィールドを追加する場合は、さらにパラメーターを書き込む必要があります。このアプローチには欠陥があります。これらのパラメーターは、cn.tedu.mybatis.Userクラスにカプセル化する必要があります。に:
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String phone;
private String email;
}
抽象メソッドは次のように設計できます。
Integer insert(User user);
次に、「インターフェイスファイルはどこにありますか」を構成して、MyBatisフレームワークが機能するときにインターフェイスが見つかるようにする必要があります。
<!-- 配置MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 配置接口文件在哪里 -->
<property name="basePackage"
value="cn.tedu.mybatis" />
</bean>
- SQLマッピングを構成する
構成ファイルを書き込むためのXMLファイル圧縮パッケージをダウンロードします。
src / main / resourcesの下にmappersという名前のフォルダーを作成し、圧縮パッケージ内のSomeMapper.xmlをこのフォルダーにコピーします。
注:MyBatisでSQLステートメントを構成するために使用されるXMLファイルには、次のステートメントが含まれている必要があります。含まれていないと、正しく機能しません。
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
XMLファイルを構成するときは、最初にルートノードを追加する必要があり、namespace属性を構成する必要があります。属性値は、どのインターフェイスファイルが対応するかを示します。
<!-- namespace:对应哪个接口 -->
<mapper namespace="cn.tedu.mybatis.UserMapper">
</mapper>
次に、実行する必要のあるSQLステートメントのタイプに応じて、、、、、およびから子ノードを選択します。ノードのid属性は、抽象メソッドの名前です。次に、実行する必要のあるSQLステートメントをノードのコンテンツに記述します。パラメーター部分で#{}を使用します。プレースホルダーの形式。プレースホルダー内の名前は、メソッドパラメーターUserクラスの属性名です。
<!-- id:抽象方法的名称 -->
<insert id="insert">
INSERT INTO t_user (
username, password,
age, phone,
email
) VALUES (
#{username}, #{password},
#{age}, #{phone},
#{email}
)
</insert>
次に、フレームワークの実行時に「XMLファイルはどこにありますか」と「データベースへの接続に使用されるデータソースはどれか」を構成する必要があります。したがって、spring-dao.xmlに構成を追加する必要があります。
<!-- 配置SqlSessionFactoryBean -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置XML文件在哪里 -->
<property name="mapperLocations"
value="classpath:mappers/*.xml" />
<!-- 配置使用哪个数据源连接数据库 -->
<property name="dataSource"
ref="dataSource" />
</bean>
最後に、ユニットテストを作成して実行します。
@Test
public void insert() {
User user = new User();
user.setUsername("zhaoqi");
user.setPassword("888999");
user.setPhone("010-88888888");
Integer rows = userMapper.insert(user);
System.out.println("rows=" + rows);
}