SpringMVCのDB接続

●前準備
前記事:「MyBatis Generatorの導入について」の段階で使用したDBを確認してください。
db01
これを使用し今回はDBへの接続と、検索。データの表示を行います。

mybatis-config.xmlの作成
以下のソースコードを使用し、プロジェクトのresourcesフォルダの中に作成してください。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <property name="url" value="jdbc:sqlserver://localhost:1433;"/>
        <property name="username" value="ユーザー名"/>
        <property name="password" value="パスワード"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
  	<mapper resource="マッパー名.xml"/>
  </mappers>
</configuration>

ユーザー名、パスワードはDB接続の際に使用するものを同じものを。
マッパー名は「MyBatis Generatorの導入について」で自動生成されたファイル名を入れてください。

①SpringMVCをDBに接続
作成したController(前作のやまびこアプリを使用している場合はEchoController.java)に以下のコードを記述。
記述は最初に通るindexメソッド内。
もしくは接続用の別メソッドを作成し、indexメソッド内で呼び出してください。

try{
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
		
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
SqlSession session = factory.openSession();
TPerson2Example example = new TPerson2Example();
//②で検索コードを記載
TPerson2Mapper mapper = session.getMapper(TPerson2Mapper.class);
List<TPerson2> persons = mapper.selectByExample(example);
//for文などを入れる

}catch(IOException e){
	System.out.println("error");
}

TPerson2の部分は作成したマッパーに合わせて変更して下さい。
この記述によりDBに接続します。
次にDBの中身をArrayListに格納します。
以下はArrayListの作成。
テーブル4項目分のリストを作成しました。
様々なページでDBを使用することを想定し、フィールドで宣言してます。

ArrayList<Integer> idlist = new ArrayList<Integer>();
ArrayList<String> namelist = new ArrayList<String>();
ArrayList<String> genderlist = new ArrayList<String>();
ArrayList<Integer> agelist = new ArrayList<Integer>();

上記の接続用メソッドのtryの中に、以下のコードを記述。

for(TPerson2 p : persons){
        idlist.add(p.getPersonId());
	namelist.add(p.getPersonName());
	genderlist.add(p.getGender());
	agelist.add(p.getAge());
}
model.addAttribute("id",idlist);
model.addAttribute("name",namelist);
model.addAttribute("gender",genderlist);
model.addAttribute("age",agelist);

拡張for文によりArrayListの中にデータを格納。
model.addAttributeで格納したデータをjspページで呼び出せるようにしてます。

DB接続し、中身を取り出し呼び出す準備が出来ました。
取り出したDBの中身をjspページで呼び出してみます。

<body>
	<p>DB接続用テストページ</p>
	<c:forEach var="i" begin="0" end="2" step="1">
	ID:<c:out value="${id[i]}" /><br>
	名前:<c:out value="${name[i]}" /><br>
	性別:<c:out value="${gender[i]}" /><br>
	年齢:<c:out value="${age[i]}" /><br><br>
	</c:forEach>
</body>

db02
DBの中身がウェブページに反映されました。

②DBに接続(検索)
DBに接続する際に、全件データを取り出すのは不便です。
その場合は取り出す際にあらかじめ、検索しておきましょう。
EchoController.javaの、
TPersonExample example = new TPersonExample();
の下に以下のコードを付け加えます

example.createCriteria()
.andPersonNameLike("%小%");
example.setOrderByClause("person_id desc");

このコードはPersonNameの中に「小」の文字が含まれている人を、person_idの降順にソートしています。
他にも様々な記述ができますが、それは各Mapperを確認してください。

db03

表示結果です。
次回はこのSpringMVCプロジェクトファイルを、ウェブにアップする手順を説明します。

この記事を読んだ人は以下の記事も読んでいます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA