项目的目录结构:
很简单。Account是要组装的Domain对象,AccountDAO是测试类,
mapper/Account.xml保存了两条Account的查询语句,而mybatis.cfg.xml
是数据库连接的配置。
package com.cdai.orm.mybatis;
public class Account {
private long id;
private long balance;
public Account() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getBalance() {
return balance;
}
public void setBalance(long balance) {
this.balance = balance;
}
@Override
public String toString() {
return "Account [id=" + id + ", balance=" + balance + "]";
}
}
<?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>
<typeAliases>
<typeAlias alias="Account" type="com.cdai.orm.mybatis.Account" />
</typeAliases>
<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://192.168.1.102:1433;databaseName=Bank" />
<property name="username" value="sa" />
<property name="password" value="1qaz2wsx" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/Account.xml" />
</mappers>
</configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Account">
<select id="selectAccount" parameterType="int" resultType="Account">
<![CDATA[
SELECT col_id AS id, col_balance AS balance
FROM tb_account
]]>
</select>
<select id="selectAccountById" parameterType="int" resultType="Account">
<![CDATA[
SELECT col_id AS id, col_balance AS balance FROM tb_account WHERE col_id = #{id}
]]>
</select>
</mapper>
package com.cdai.orm.mybatis;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class AccountDAO {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
String resource = "mybatis.cfg.xml";
try {
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
List<Account> accounts = (List<Account>) session.selectList("selectAccount");
for (Account account : accounts) {
System.out.println(account);
}
Account account = (Account) session.selectOne("selectAccountById", 2);
System.out.println(account);
session.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}