EclipseでMyBatisプロジェクトを作成する

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>
  1. 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);
}

おすすめ

転載: blog.csdn.net/qq_37669050/article/details/102403362