-
Notifications
You must be signed in to change notification settings - Fork 10
SQL Mapper
landawn edited this page Apr 29, 2018
·
1 revision
SQLMapper supports the pre-defined sql in xml file. Here is the schema: SQLMapper.xsd. It's easy to generate class for the mapping id by Code Generation and used in: SQLExecutor, CassandraExecutor, CouchbaseExecutor. Here are the steps/samples about how to do it:
- Step 1: Write the sql scripts in the xml file. Here is a sample:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sqlMapper>
<sql id="insertAccount">INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (#{firstName}, #{lastName}, #{gui}, #{lastUpdateTime}, #{createTime})</sql>
<sql id="selectAccountById">select * from account WHERE account.id = #{id}</sql>
<sql id="selectAllAccount">select * from account</sql>
<sql id="updateAccountFirstNameById">UPDATE account SET first_name = #{firstName} WHERE account.id = #{id}</sql>
<sql id="deleteAccountById">DELETE FROM account WHERE account.id = #{id}</sql>
<sql id="deleteAllAccount">DELETE FROM account</sql>
</sqlMapper>
- Step 2: Generate the class for SQL mapper ids by the xml file
public static void generateSQLMapperIdTable() {
String srcPath = "./src/";
final String sqlMapperXmlFile = "./resources/codesSQLMapper.xml";
final String targetClassName = "CodesSQLMapperIdList";
CodeGenerator.generateSQLMapperIdTable(sqlMapperXmlFile, srcPath, packageName, targetClassName, null);
}
- Step 3: Initialize the SQLExecutor with SQLMapper
static final String dataSourcePath = "./resources/h2_dataSource.xml";
static final SQLMapper sqlMapper = new SQLMapper("./resources/codesSQLMapper.xml");
static final SQLExecutor sqlExecutor = new SQLExecutor(JdbcUtil.createDataSourceManager(dataSourcePath), null, sqlMapper);
- Programming with sql mapper ids
public void test_crud() {
Account account = createAccount("firstName123", "lastName123");
// insert
long id = sqlExecutor.insert(INSERT_ACCOUNT, account);
// read
Account dbAccount = sqlExecutor.queryForEntity(Account.class, SELECT_ACCOUNT_BY_ID, id);
N.println(dbAccount);
// update
String newFirstName = "newFirstName";
dbAccount.setFirstName(newFirstName);
sqlExecutor.update(UPDATE_ACCOUNT_FIRST_NAME_BY_ID, dbAccount);
dbAccount = sqlExecutor.queryForEntity(Account.class, SELECT_ACCOUNT_BY_ID, id);
assertEquals(newFirstName, dbAccount.getFirstName());
// delete
sqlExecutor.update(DELETE_ACCOUNT_BY_ID, dbAccount);
dbAccount = sqlExecutor.queryForEntity(Account.class, SELECT_ACCOUNT_BY_ID, id);
assertNull(dbAccount);
}
- How to Learn/Use the APIs correctly and efficiently
- Programming in RDBMS with Jdbc/PreparedQuery/SQLExecutor/Mapper/Dao
- JSON/XML Parser
- SQLite Executor
- SQL Executor
- SQL Builder
- SQL Mapper
- DataSet
- JdbcUtil/CSVUtil
- IOUtil
- PrimitiveList
- Profiler
- Http Client
- Web Services
- Programming in Android
- Parse/Analyze/Operate (Big) Data (on N servers in parallel)
- Code Generation
- Introduction to JDBC
- Naming Convention
- Partitioning/Distribution
- SQL/NoSQL
- Model/Entity