MyBatis學習筆記一:SqlSessionFactory

參考資料: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

Source Download

相關文章
相關標籤/搜索