zoukankan      html  css  js  c++  java
  • 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

    测试成功.

  • 相关阅读:
    面试题练习
    小作业7
    小作业6,7
    小作业
    坦克大战
    面试题
    20181213作业
    20181212作业
    20181211作业
    第三周周末作业
  • 原文地址:https://www.cnblogs.com/bkyliufeng/p/6291744.html
Copyright © 2011-2022 走看看