參考資料:http://mybatis.github.io/mybatis-3/zh/getting-started.html html
每個MyBatis的應用程序都以一個SqlSessionFactory對象的實例爲核心。SqlSessionFactory對象的實例能夠經過SqlSessionFactoryBuilder對象來得到。SqlSessionFactoryBuilder對象能夠從XML配置文件,或從Configuration類的習慣準備的實例中構建SqlSessionFactory對象。 java
項目截圖[MyBatis-0100] mysql
Demo依賴[pom.xml] git
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.24</version> </dependency>
MyBatis項目應包含一個全局的xml配置文件[mybatis.xml],名稱任意(代碼中的config.properties根據字段自行配置便可) github
<?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> <!-- 引入配置文件 --> <properties resource="config.properties" /> <!-- 別名 --> <typeAliases> <package name="net.yeah.likun_zhang.model"/> </typeAliases> <!-- 環境配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${db.driver}" /> <property name="url" value="${db.url}" /> <property name="username" value="${db.user}" /> <property name="password" value="${db.pass}" /> </dataSource> </environment> </environments> <!-- 映射文件 --> <mappers> <mapper resource="mappers/user.xml" /> </mappers> </configuration>固然SqlSessionFactory也能夠不從XML構建,而直接使用Java程序構建:(本段代碼摘自: http://mybatis.github.io/mybatis-3/zh/getting-started.html )
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(BlogMapper.class); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);Demo測試代碼以下 :
[table:tbl_user] sql
[user.xml] apache
<?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接口全名 --> <mapper namespace="net.yeah.likun_zhang.mapper.IUserMapper"> <!-- 主鍵查詢 --> <select id="getUser" parameterType="long" resultType="user"> select * from tbl_user where id = #{id} </select> </mapper>
[User.java] session
package net.yeah.likun_zhang.model; import java.util.Date; /** * * @author ZhangLiKun * @mail likun_zhang@yeah.net * @date 2013-3-29 */ public class User { private Long id ; private String account ; private String password ; private String nickname ; private int gender ; private String email ; private int status ; private String headPic ; private Date birthday ; private Long starId; private Long bloodId; private Long addrId; private String selfIntr; private Date registedTime; private Date activedTime; // getter、setter略 ... }
[IUserMapper.java] mybatis
package net.yeah.likun_zhang.mapper; import net.yeah.likun_zhang.model.User; /** * 用戶表映射接口 * @author ZhangLiKun * @mail likun_zhang@yeah.net * @date 2013-3-31 */ public interface IUserMapper { User getUser(Long id) ; }[測試用例]
package net.yeah.likun_zhang.example; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.io.InputStream; import net.yeah.likun_zhang.mapper.IUserMapper; import net.yeah.likun_zhang.model.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; public class SqlSessionTest { private SqlSessionFactory sessionFactory ; @Before public void setup() throws IOException { String resource = "mybatis.xml"; InputStream in = Resources.getResourceAsStream(resource); sessionFactory = new SqlSessionFactoryBuilder().build(in); } /** * 從會話中獲取mapper * @date 2013-4-7 */ @Test public void testSelectOne() { SqlSession session = sessionFactory.openSession(); User user = null; try { IUserMapper um = session.getMapper(IUserMapper.class); user = um.getUser(1L); } finally { session.close(); } assertNotNull(user); assertEquals("admin", user.getAccount()); } /** * 從命名空間中獲取mapper * @date 2013-4-7 */ @Test public void testSelectOne2() { SqlSession session = sessionFactory.openSession(); User user = null; try { // 注意命名空間:net.yeah.likun_zhang.mapper.IUserMapper user = session.selectOne("net.yeah.likun_zhang.mapper.IUserMapper.getUser", 1L) ; } finally { session.close(); } assertNotNull(user); assertEquals("admin", user.getAccount()); } }
關於SqlSessionFactory和SqlSession的範圍及生命週期,參考: http://mybatis.github.io/mybatis-3/zh/getting-started.html app