[JAVA] Paramètres initiaux jusqu'à ce que S2Dao puisse être utilisé

Je n'ai pas trouvé beaucoup d'articles sur les paramètres initiaux de S2Dao, et j'ai eu un peu de mal, donc je l'écrirai moi-même à l'avenir.

Environnement d'exécution

objectif

L'interface Dao utilisant S2Dao est automatiquement liée et SQL est exécuté.

Réglage initial de la base de données

Stocker les données dans la table de balance


mysql> select * from sastrutsdb.balance;
+----+--------------+--------+---------------------+------------+
| id | name         | amount | created_at          | updated_at |
+----+--------------+--------+---------------------+------------+
|  1 |Taro Tanaka|  10000 | 2019-05-03 19:25:33 | NULL       |
|  2 |Hanako Sato|  20000 | 2019-05-03 23:48:40 | NULL       |
+----+--------------+--------+---------------------+------------+
2 rows in set (0.00 sec)

Paramètres des fichiers pom et dicon

paramètres de fichier pom

Téléchargez mysql-connector-java-8.0.16.jar et s2-dao-1.0.49.jar

pom.xml


        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.16</version>
        </dependency>
        <dependency>
          <groupId>org.seasar.dao</groupId>
          <artifactId>s2-dao-tiger</artifactId>
          <version>1.0.49</version>
        </dependency>

Maven Nettoyez le projet.

* Confirmez que le fichier jar cible existe dans WEB-INF / lib Copie automatiquement en définissant les dépendances de copie dans pom </ font>

paramètres de fichier dicon

Création d'un fichier dicon pour enregistrer l'interface dao avec le conteneur Le dao.dicon inclus est un fichier dicon qui existe dans s2-dao-1.0.49.jar.

Spécifiez la classe de l'interface dao à enregistrer en tant que composant dans addClassPattern.

MySQL.dicon (tout nom de fichier est OK)


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="dao.dicon"/>

    <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>

    <component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
      <property name="autoNaming">
        <component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
      </property>
      <initMethod name="addClassPattern">
        <arg>"org.seasar.sastruts.example.dao"</arg>
        <arg>".*Dao"</arg>
      </initMethod>
    </component>

    <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
      <property name="interceptor">dao.interceptor</property>
      <initMethod name="addClassPattern">
        <arg>"org.seasar.sastruts.example.dao"</arg>
        <arg>".*Dao"</arg>
      </initMethod>
    </component>

</components>

Spécifiez le fichier dicon créé ci-dessus dans app.dicon

app.dicon


  <include path="MySQL.dicon"/>

Paramètres mysql et enregistrement des composants S2Dao dans jdbc.dicon Le nom d'utilisateur et le mot de passe sont définis de manière appropriée

jdbc.dicon


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
	<include path="jta.dicon"/>

    <component name="resultSetFactory" class="org.seasar.dao.pager.PagerResultSetFactoryWrapper">
      <arg>
        <component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
      </arg>
      <property name="useScrollCursor">true</property>
    </component>
    <component class="org.seasar.extension.jdbc.impl.ConfigurableStatementFactory">
      <arg>
        <component class="org.seasar.dao.pager.PagerStatementFactory"/>
      </arg>
      <property name="fetchSize">100</property>
    </component>

	<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"com.mysql.cj.jdbc.Driver"
		</property>
		<property name="URL">
			"jdbc:mysql://localhost:3306/sastrutsdb?characterEncoding=UTF-8&amp;characterSetResults=UTF-8"
		</property>
		<property name="user">"sa"</property>
		<property name="password">"password"</property>
	</component>

	<component name="connectionPool"
		class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
		<property name="timeout">600</property>
		<property name="maxPoolSize">10</property>
		<property name="allowLocalTx">true</property>
		<destroyMethod name="close"/>
	</component>

	<component name="DataSource"
		class="org.seasar.extension.dbcp.impl.DataSourceImpl"
	/>

</components>

Ceci termine les réglages. Le reste sera mis en œuvre.

la mise en oeuvre

Création d'entité

Balance


@Entity
@Table(name = "sample")
public class Balance {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int id;

	@Column(name = "amount", nullable = false, unique = false)
	public long amount;
	
	@Column(name = "name", nullable = false, unique = false)
	public String name;

	@Column(name = "created_at", nullable = false, unique = false)
	@Temporal(TemporalType.DATE)
	public Date createdAt;

	@Column(name = "updated_at", nullable = true, unique = false)
	@Temporal(TemporalType.DATE)
	public Date updatedAt;

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("id:").append(id);
		sb.append("name:").append(name);
		sb.append("created_ad:").append(createdAt);
		sb.append("updated_ad:").append(updatedAt);
		return sb.toString();
	}
}

Création d'actions

BalanceAction


public class BalanceAction {

	@Binding
	BalanceService balanceService;

	@Execute(validator=false)
	public String index() {
		List<Balance> balanceList = balanceService.findAll();
		System.out.println("BALANCE_SIZE:" + balanceList.size());
		StringBuilder responseText = new StringBuilder();

		for (Balance balance : balanceList) {
			responseText.append(balance.toString() + "\r\n");
		}
		ResponseUtil.write(responseText.toString(), "text/html", "UTF-8");
		return null;
	}
}

Création de service

Fichier de liaison Dao ici

BalanceService


public class BalanceService {

	@Binding
	BalanceDao balanceDao;

	public List<Balance> findAll() {
		return balanceDao.findAll();
	}
}

Créer une interface Dao

BalanceDao


@S2Dao(bean = Balance.class)
public interface BalanceDao {
	public List<Balance> findAll();
}

Courir

$ curl "localhost:8080/sastruts/balance/"
id:1name:Création de Taro Tanaka_ad:2019-05-03 19:25:33.0updated_ad:null
id:2name:Hanako Sato a créé_ad:2019-05-03 23:48:40.0updated_ad:null

J'ai pu obtenir les données en toute sécurité.

référence

Introduction à Seasar2 S2Dao Référence S2Dao

Recommended Posts

Paramètres initiaux jusqu'à ce que S2Dao puisse être utilisé
Jusqu'à ce que le rubis puisse être utilisé dans les fenêtres ...
Paramètres initiaux de l'EC2
Organiser les méthodes qui peuvent être utilisées avec StringUtils
Scala String peut être utilisé pour plus que de simples méthodes java.lang.String
À propos du problème que hidden_field peut être utilisé de manière insensée
Touches de raccourci pratiques pour Eclipse
Créer un contrôle de page qui peut être utilisé avec RecyclerView
Base de données Firebase-Realtime sur Android pouvant être utilisée avec copie
[Question] Nullif peut-il être utilisé dans la fonction de comptage de JPQL?
Si les options peuvent être utilisées en raison des différentes versions de Java