MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀框架。MyBatis 消除了几乎所有的代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
搭建开发的环境:mybatis-3.1.1.jar和mysql-connector-java-5.1.7-bin.jar
- 配置文件:
1. 设置mybatis 配置文件:SQLMapconfig.xml, 在src目录下建立此文件(文件名任意,格式为.xml):
内容如下:
2、定义表所对应的实体类,如下图所示:
package org.wangyi.com;import java.text.SimpleDateFormat;import java.util.Date;/** * 定义实体类 * * @author wangyi * @version 1.0 * 百度一下 */public class User { private int id; private String username; private Date birthday; private String sex; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String bd = format.format(this.birthday); String content = "User[ " + this.id + "," + this.username + "," + this.sex + "," + bd + "," + this.address + " ]"; return content; }}
3、定义操作users表的sql映射文件userMapper.xml
创建一个me.gacl.mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件,如下图所示:
下面是对这几个配置文件一点解释说明:
1、配置文件SQLMapconfig.xml.xml 是 mybatis 用来建立 sessionFactory,里面主要包含了数据库连接相关内容,还有 java 类所对应的别名,比如:<typeAlias alias="User" type="org.wangyi.mapping.userMapperr"/> 这个别名非常重要,在具体的类的映射中,比如:User.xml 中 resultType 就是对应这个。要保持一致,这里的 resultType 还有另外单独的定义方式,后面学习到我们再详细介绍说明。2、SQLMapconfig.xml 里面 的<mapper resource="com/yiibai/mybatis/models/User.xml"/>是包含要映射的类的 xml 配置文件。3、在userMapper.xml 文件里面主要是定义各种 SQL 语句,以及这些语句的参数,以及要返回的类型等等。开始测试
package org.wangy.first;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;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.Test;import org.wangyi.com.User;/** * MyBatis的入门程序 * * @author wangyi * @version 1.0 * 百度一下 * */public class MyBatisFirst { // 查询一条记录 @Test public void findUserByid() throws IOException { // MyBatis的配置文件 String resource = "SQLMapConfig.xml"; // 得到SQLMapConfig.xml配置文件流 String path = MyBatisFirst.class.getClassLoader().getResource(resource) .getPath(); InputStream inputStream = new FileInputStream(path); // 使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件) // Reader reader = Resources.getResourceAsReader(resource)或者 // InputStream inputStream = Resources.getResourceAsStream(resource); // 创建MyBatis的会话工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(inputStream); // 得到会话sqlSession SqlSession sqlSession = factory.openSession(); // 通过sqlSession操作数据库 /** * 第一个参数:值=xxxMapper.xml文件中mapper标签的namespace属性的值+“.”+sql语句标签的id值, * 第二个参数:值=和映射文件所匹配的ResultType类型的参数 */ User user = sqlSession.selectOne( "org.wangyi.mapping.userMapper.finduserByid", 31); // 释放资源,不要忘记 sqlSession.close(); System.out.println(user); }}