MyBatis简介与入门案例
MyBatis简介
MyBatis是一个半自动化的持久层框架,支持定制化SQL、存储过程及高级映射,避免了几乎所有的JDBC代码、手动设置参数和获取结果集的过程。可以通过XML或注解进行配置和原始映射,从而将接口和bean映射成数据库中的记录。
无论是JDBC、DBUtils还是JDBCTemplate,都需要将SQL语句编写在Java代码中,这是一种硬编码、高耦合的方式。而Mybatis最大的优点在于:使SQL语句和Java代码分离,SQL由开发人员控制,功能边界清晰,一个专注业务,一个专注数据。
下载地址:https://github.com/mybatis/mybatis-3/
入门案例
入门案例的目的是查询表employee中的一条数据,并返回一个Employee对象。
Step1:创建测试表和对应的JavaBean。并导入所需的jar包

Step2:创建全局配置文件mybatis-config.xml,配置数据源的运行环境信息
1 <!DOCTYPE configuration
2 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
4 <configuration>
5 <environments default="development">
6 <environment id="development">
7 <transactionManager type="JDBC"/>
8 <dataSource type="POOLED">
9 <property name="driver" value="com.mysql.jdbc.Driver"/>
10 <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
11 <property name="username" value="root"/>
12 <property name="password" value="123456"/>
13 </dataSource>
14 </environment>
15 </environments>
16 </configuration>
注:数据源的配置在实际开发中交给Spring去做。
Step3:定义一个接口,并在其中定义方法
1 public interface EmplMapper {
2 public Employee getEmplById(int id);
3 }
Step4:创建Employee的sql映射文件EmplMapper.xml,配置每一个sql及sql的封装规则
1 <!DOCTYPE mapper 2 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="com.dao.EmplMapper"> 5 <!-- id:唯一标识;resultType:返回值类型--> 6 <!-- #{id}:从传递过来的参数中取id值 --> 7 <select id="getEmplById" resultType="com.bean.Employee"> 8 select * from employee where id = #{id} 9 </select> 10 </mapper>
注:mapper标签的唯一标识为此接口的全类名,select标签的唯一标识为接口中定义的方法。
将sql映射文件注册到全局配置文件中
<mappers>
<mapper resource="EmplMapper.xml"/>
</mappers>
Step5:通过全局配置文件创建SqlSessionFactory的实例,再通过SqlSessionFactory获取SqlSession的实例,获取接口实现类的对象,进而调用接口中的方法
1 //获取SqlSessionFactory的实例
2 public SqlSessionFactory getSqlSessionFactory() throws IOException{
3 InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
4 return new SqlSessionFactoryBuilder().build(is);
5 }
6 @Test
7 public void test1() throws IOException{
8 //1.获取SqlSession对象
9 SqlSession sqlSession = getSqlSessionFactory().openSession();
10 try{
11 //2.获取接口实现类的代理对象
12 EmplMapper mapper = sqlSession.getMapper(EmplMapper.class);
13 //3.调用接口中的方法
14 Employee empl = mapper.getEmplById(1);
15 System.out.println(empl);
16 }finally{
17 sqlSession.close();
18 }
19 }
注:将接口和xml绑定后,MyBatis会为接口自动创建一个代理对象,使用代理对象去执行增删改查。

浙公网安备 33010602011771号