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.
L'interface Dao utilisant S2Dao est automatiquement liée et SQL est exécuté.
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)
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>
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&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.
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();
}
}
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;
}
}
Fichier de liaison Dao ici
BalanceService
public class BalanceService {
@Binding
BalanceDao balanceDao;
public List<Balance> findAll() {
return balanceDao.findAll();
}
}
BalanceDao
@S2Dao(bean = Balance.class)
public interface BalanceDao {
public List<Balance> findAll();
}
$ 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é.
Introduction à Seasar2 S2Dao Référence S2Dao
Recommended Posts