iBatis3 Note(二) : 初识Hello World
和学习所有框架API一样,有个HelloWorld的例子
本着1+1=2学习的逻辑,以下继续对iBatis3做一些简单实现
?
熟悉Hibernate的都知道如下几步
/** * 1. create Configuration * 2. build SessionFactory * 3. open Session * 4. begin Transaction * 5. do crud operation * flush commit rollback * 6. close resource */
?
?
?而iBatis3会有如下几步
?
/** * 1. create SqlSessionFactoryBuilder * 2. read config file * 3. build Factory * 4. open session * 5. do crud operations * 6. close session */
?
第一个实现Hello World,
?
先看下文件结构

?
?
既然是iBatis,首先创建脚本,用的是mysql
DROP TABLE IF EXISTS `ibatis`.`t_helloworld`;CREATE TABLE `ibatis`.`t_helloworld` ( `hw_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `age` int(2) unsigned NOT NULL, PRIMARY KEY (`hw_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
?
?数据如下
?
?
?
同时关注几个文件
- ibatis-config.xmlconfig.propertieshelloworld.map.xml
?
- ibatis-config.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"><configuration><!-- 数据库配置文件 --><properties resource="basic/config.properties"/><!-- default属性一定要指定为其中某一environment的id --><environments default="helloworld"><environment id="helloworld"><!-- type暂时用最简单的JDBC,其他可选项MANAGED --><transactionManager type="JDBC" /><!-- type暂时用最简单的POOLED,其他可选项UNPOOLED,JNDI --><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/><!-- property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ibatis"/><property name="username" value="root"/><property name="password" value="abcdef"/ --></dataSource></environment></environments><!-- 映射文件 --><mappers><mapper resource="basic/helloworld.map.xml"/></mappers></configuration>?
?
???? 2.?? config.properties
driver=com.mysql.jdbc.Driverurl=jdbc\:mysql\://localhost\:3306/ibatisusername=rootpassword=abcdef
?
??? 3.?? helloworld.map.xml
?
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD iBatis Mapper 3.0 //EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"><mapper namespace="basic.HelloWorld"><select id="getHelloworlds" resultType="java.util.List">select * from t_helloworld</select><select id="getHelloworldsByHwId" resultType="java.util.List" parameterType="int">select * from t_helloworld where hw_id = #{hw_id}</select></mapper>?
?
FirstTest.java
package basic;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 FirstTest {public static void main(String[] args) throws IOException {String configXml = "basic/ibatis-config.xml";SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();Reader config = Resources.getResourceAsReader(configXml);SqlSessionFactory factory = builder.build(config);SqlSession session = factory.openSession();List<HelloWorld> list = null;try {list = session.selectList("getHelloworlds");System.out.println(list.size());list = session.selectList("getHelloworldsByHwId", 1);System.out.println(list.size());} finally {session.close();}}}?
?