参考资料: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