Mybatis学习笔记(一)入门例子

开始学习另一个ORM 框架:Mybatis,与hibernate类似,感觉比Hibernate轻量,比较小.

这节要完成入门例子.

1.建表mybatis_student

id name age

2.实体类

  1. package com.skymr.mybatis.model;  
  2.   
  3. public class Student {  
  4.   
  5.     private int id;  
  6.       
  7.     private String name;  
  8.       
  9.     private int age;  
  10.       
  11.     /**  
  12.      * 必须要有无参构造器,有参构造器可有可无(至少我测试时是这样)  
  13.      * 如果没有无参构造器,只有有参构造器,会报错  
  14.      */  
  15.     public Student() {  
  16.     }  
  17.     public Student(String name, int age) {  
  18.         this.name = name;  
  19.         this.age = age;  
  20.     }  
  21.   
  22.     public int getId() {  
  23.         return id;  
  24.     }  
  25.   
  26.     public void setId(int id) {  
  27.         this.id = id;  
  28.     }  
  29.   
  30.     public String getName() {  
  31.         return name;  
  32.     }  
  33.   
  34.     public void setName(String name) {  
  35.         this.name = name;  
  36.     }  
  37.   
  38.     public int getAge() {  
  39.         return age;  
  40.     }  
  41.   
  42.     public void setAge(int age) {  
  43.         this.age = age;  
  44.     }  
  45.       
  46.     public String toString(){  
  47.         return "["+name+","+age+"]";  
  48.     }  
  49.       
  50. }  

3.mybatis配置文件

jdbc.properties : jdbc配置信息

  1. jdbc.driverClassName=com.mysql.jdbc.Driver  
  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/website  
  3. jdbc.username=root  
  4. jdbc.password=root  


conf.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  3. <configuration>  
  4.     <!-- 引入jdbc配置信息 -->  
  5.     <properties resource="jdbc.properties"></properties>  
  6.     <typeAliases>  
  7.         <!-- 别名配置,方便书写 -->  
  8.         <typeAlias alias="Student" type="com.skymr.mybatis.model.Student"/>  
  9.     </typeAliases>  
  10.     <!-- 环境配置 -->  
  11.     <environments default="development">  
  12.         <!-- 开发环境,企业里面可能有多个环境 -->  
  13.         <environment id="development">  
  14.             <transactionManager type="JDBC" />  
  15.             <!-- 配置数据库连接信息 -->  
  16.              <dataSource type="POOLED">  
  17.                  <property name="driver" value="${jdbc.driverClassName}" />  
  18.                  <property name="url" value="${jdbc.url}" />  
  19.                  <property name="username" value="${jdbc.username}" />  
  20.                  <property name="password" value="${jdbc.password}" />  
  21.              </dataSource>  
  22.          </environment>  
  23.      </environments>  
  24.        
  25.      <mappers>  
  26.          <!-- 注册StudentMapper.xml文件, -->  
  27.          <mapper resource="com/skymr/mybatis/mappers/StudentMapper.xml"/>  
  28.      </mappers>  
  29. </configuration>  


与Hibernate太像了啊.

4.映射文件与映射接口

映射接口

  1. package com.skymr.mybatis.mappers;  
  2.   
  3. import com.skymr.mybatis.model.Student;  
  4.   
  5. public interface StudentMapper {  
  6.   
  7.     public Student getStudent(int id);  
  8. }  


映射文件,类似Hibernate的xml配置的映射

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <!-- namespace:Mapper映射 -->  
  4. <!-- 这个文件感觉就像StudentMapper接口的实现一样,只是从java文件变成了xml文件  
  5. 充当了Dao类的功能  
  6.  -->  
  7. <mapper namespace="com.skymr.mybatis.mappers.StudentMapper">  
  8.     <select id="getStudent" parameterType="int" resultType="Student">  
  9.         <!-- mybatis要自己写sql语句 -->  
  10.         select * from mybatis_Student where id=#{id}  
  11.     </select>  
  12. </mapper>   


这个映射文件感觉就是映射接口的实现类

5.工具类,获取Session

  1. package com.skymr.mybatis.util;  
  2.   
  3. import java.io.InputStream;  
  4.   
  5. import org.apache.ibatis.session.SqlSession;  
  6. import org.apache.ibatis.session.SqlSessionFactory;  
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  8.   
  9. /**  
  10.  * 工具类,单例  
  11.  * @author skymr  
  12.  *  
  13.  */  
  14. public class MybatisUtil {  
  15.   
  16.     private static SqlSessionFactory factory;  
  17.       
  18.     public static SqlSessionFactory getSessionFactory(){  
  19.         if (factory == null){  
  20.             InputStream is = MybatisUtil.class.getClassLoader().getResourceAsStream("conf.xml");  
  21.             factory = new SqlSessionFactoryBuilder().build(is);  
  22.         }  
  23.         return factory;  
  24.     }  
  25.       
  26.     public static SqlSession openSession(){  
  27.         return getSessionFactory().openSession();  
  28.     }  
  29. }  


6.测试

  1. package com.skymr.mybatis.service;  
  2.   
  3. import org.apache.ibatis.session.SqlSession;  
  4.   
  5. import com.skymr.mybatis.mappers.StudentMapper;  
  6. import com.skymr.mybatis.util.MybatisUtil;  
  7.   
  8. public class StudentTest {  
  9.     public static void main(String[] args){  
  10. //        String statement = "com.skymr.mybatis.mappers.StudentMapper.getStudent";//映射sql的标识字符串  
  11. //        //执行查询返回一个唯一user对象的sql  
  12. //        Student student = MybatisUtil.openSession().selectOne(statement, 1);  
  13. //        System.out.println(student);  
  14.         SqlSession session = MybatisUtil.openSession();  
  15.         StudentMapper mapper = session.getMapper(StudentMapper.class);  
  16.         System.out.println(mapper.getStudent(1));  
  17.         session.close();  
  18.     }  
  19. }  

ps:

session需要关闭;

从session里取出映射接口的实例就可调用操作数据库的方法了,底层一定是根据映射配置文件实现了一个映射接口,这个跟hibernate不一样啊.


数据库里添加一行数据,id=1

测试成功.

原文地址:https://www.cnblogs.com/bkyliufeng/p/6291744.html