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会为接口自动创建一个代理对象,使用代理对象去执行增删改查。

 

posted @ 2021-07-08 10:20  wwwdyy  阅读(76)  评论(0)    收藏  举报