4.7、应用案例:MyBatis入门程序
这个案例程序目录结构如下:

其中mybatis-config.xml文件如下:
<?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> <!-- 配置默认环境为mysql --> <environments default="mysql"> <!-- 配置id为mysql的环境 --> <environment id="mysql"> <!-- 使用JDBC的事务管理逻辑 --> <transactionManager type="JDBC"/> <!-- 配置数据库的连接池 --> <dataSource type="POOLED"> <!-- 配置数据库驱动为mysql驱动 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <!-- 数据库连接URL --> <property name="url" value="jdbc:mysql://localhost:3306/school?characterEncoding=UTF-8"/> <!-- 配置数据库帐号 --> <property name="username" value="root"/> <!-- 配置数据库密码 --> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!-- 导入其它xml文件 --> <mapper resource="entity/StudentMapper.xml"/> </mappers> </configuration> |
在这个文件中我们对MySQL数据库连接进行了配置,并导入了数据库中的表student的映射文件StudentMapper.xml,该文件内容如下:
<?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">
<!-- 配置名称为entity的命名空间,该空间中有一些功能强大的方法 --> <mapper namespace="entity"> <!-- 配置查询功能,相当于一个名称为findStudentById(int stuid)的方法 --> <select id="findStudentById" parameterType="Integer" resultType="entity.Student"> select * from student where stuid=#{stuid} </select> </mapper> |
在这个文件中我们配置了一个名称为entity的命名空间,该空间中有一个功能强大的方法,方法名为findStudentById,该方法有一个Integer类型的参数和一个entity.Student类型的返回值。
entity.Student类的定义如下:
package entity;
public class Student { int stuid; String stuname; int stuage; String phone; public int getStuid() { return stuid; } public void setStuid(int stuid) { this.stuid = stuid; } public String getStuname() { return stuname; } public void setStuname(String stuname) { this.stuname = stuname; } public int getStuage() { return stuage; } public void setStuage(int stuage) { this.stuage = stuage; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } } |
从entity.Student类的定义我们可以看到,该类中的成员变量完全与数据库school中的表student的字段一一对应。
需要注意的是Student.java与StudentMapper.xml两个文件是位于同一个包中的。
接下来我们编写测试程序如下:
package entity;
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; //@Test
public class Test { public static void main(String[] args)throws Exception { new Test().findStudentById(); } public void findStudentById()throws Exception{ //读取配置文件 InputStream inp=Resources.getResourceAsStream("mybatis-config.xml"); //生成操作数据库的会话工厂 SqlSessionFactory sqlsession=new SqlSessionFactoryBuilder().build(inp); //从会话工厂里获取一个会话 SqlSession ssion=sqlsession.openSession(); //利用会话对象的查询功能从数据库中查询数据 Student stu=ssion.selectOne("entity.findStudentById",1); System.out.println(stu.stuname); ssion.close(); }
} |
程序运行结果可以看到我们能够正确的读取到数据库中的数据。

