MyBatis 是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。

MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。

MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的domain映射成数据库中的记录。

快速入门:

1.添加jar包

mybatis-3.2.1.jar(jar包版本不能太低,太低的版本无法支持接口注解)

mysql-connector-java-5.1.8-bin.jar

2.创建表

在此使用的是mysql数据库来测试

 create table user(
     id int primary key auto_increment,
     name ),
     age int
 );

3.创建configuration.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>
     <properties resource="db.properties"></properties>
     <typeAliases>
         <typeAlias type="com.model.User" alias="User"/>
     </typeAliases>
     <environments default="development">
         <environment id="development">
             <transactionManager type="jdbc"/>
             <dataSource type="POOLED">
                 <property name="username" value="${username}"/>
                 <property name="password" value="${password}"/>
                 <property name="url" value="${url}"/>
                 <property name="driver" value="${driver}"/>
             </dataSource>
         </environment>
     </environments>
     <mappers>
         <!-- 首先使用接口注解的方式来映射 -->
         <mapper class="com.dao.UserDao"/>
     </mappers>
 </configuration>

4.定义实体类

 package com.dao;

 public class User {

     private int id;
     private String name;
     private int age;

     public int getId() {
         return id;
     }
     public void setId(int id) {
         this.id = id;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public int getAge() {
         return age;
     }
     public void setAge(int age) {
         this.age = age;
     }
     @Override
     public String toString() {
         return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
     }
 }

5.编写接口

 public interface UserDao {

     @Select("select * from user where id=#{id}")
     public User selectById(int id);
 }

6.在已配置过的configuration.xml中配置接口映射,必须是接口的全类名

 <mappers>
     <!-- 首先使用接口注解的方式来映射 -->
     <mapper class="com.dao.UserDao"/>
 </mappers>

7.编写测试文件

 public class Main {

     public static void main(String[] args) throws IOException {
         // TODO Auto-generated method stub

         InputStream is = Main.class.getClassLoader().getResourceAsStream("configuration.xml");
         /**
          * 另一种方式读取mybatis配置文件
          * String resource="configuration.xml";
          * Reader reader = Resources.getResourceAsReader(resource);
          */
         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
         SqlSession ss = sqlSessionFactory.openSession();
         UserDao userDao = ss.getMapper(UserDao.class);

         User user = userDao.selectById(1);
         System.out.println(user);
     }
 }

以上是使用基于接口注解的方式来映射,当我们使用接口注解时,并不仅仅局限于以下配置:

 <mappers>
      <!-- 首先使用接口注解的方式来映射 -->
      <mapper class="com.dao.UserDao"/>
 </mappers>

我们还可以创建该接口的实现--UserMapper.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">
 <mapper namespace="com.dao.UserDao">
 </mapper>

然后将configuration.xml配置改为:

 <mappers>
     <!-- 使用xml的方式来映射 -->
     <mapper resource="com/dao/UserMapper.xml"/>
 </mappers>

注意:当使用接口定义方法,而没有提供注解时,这时的UserMapper.xml就需要配置该接口所需要的信息了:

接口:

 public interface UserDao {

     public User selectById(int id);
 }
 <?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">
 <mapper namespace="com.dao.UserDao">
     <select id="selectById" parameterType="int" resultType="User">
         select * from user where id=#{id}
     </select>
 </mapper>
 <mappers>
     <!-- 使用xml的方式来映射 -->
     <mapper resource="com/dao/UserMapper.xml"/>
 </mappers>

------------------------------------以上是使用接口方式来映射----以下使用xml方式来映射---------------------------------------------

在上面的步骤中,将第5步去掉,然后编写完整的UserMapper.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">
 <mapper namespace="com.dao.UserMapper">
     <select id="selectById" parameterType="int" resultType="User">
         select * from user where id=#{id}
     </select>
 </mapper>

然后将configuration.xml配置为:

 <mappers>
     <!-- 使用xml的方式来映射 -->
     <mapper resource="com/dao/UserMapper.xml"/>
 </mappers>

测试:

 public class Main {

     public static void main(String[] args) throws IOException {
         // TODO Auto-generated method stub

         InputStream is = Main.class.getClassLoader().getResourceAsStream("configuration.xml");
         /**
          * 另一种方式读取mybatis配置文件
          * String resource="configuration.xml";
          * Reader reader = Resources.getResourceAsReader(resource);
          */
         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
         SqlSession ss = sqlSessionFactory.openSession();

         User user = ss.selectOne("com.dao.UserDao.selectById", 1);
         System.out.println(user);
     }
 }

以上是快速入门情况,很多配置没有详细说,下面章节开始详细讲解MyBatis配置等!!

ps:该文章仅代码本人学习过程,希望能给想学习的或正在学习的朋友带来一定的领悟.

  欢迎大家指正错误,小弟在此感激不尽!!!

mybatis学习之路的更多相关文章

  1. mybatis学习之路----批量更新数据两种方法效率对比

    原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方 ...

  2. MyBatis学习之路之configuration配置

    1.首先讲解的是MyBatis核心配置文件configuration.xml的配置 一个完整的configuration.xml配置顺序如下: properties,settings,typeAlia ...

  3. myBatis学习之路1-基本功能实现

    myBatis也是一个持久型框架,相较于hibernate来说,算是轻量级的. 1.配置mybatis环境 相关jar下载地址:mybatis+mysalJAR包 2.新建一个java project ...

  4. mybatis学习之路----mysql批量新增数据

    原文:https://blog.csdn.net/xu1916659422/article/details/77971867 接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到. ...

  5. springboot 学习之路 3( 集成mybatis )

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  6. 新篇章之我的java学习之路下

    昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...

  7. springboot 学习之路 8 (整合websocket(1))

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  8. springboot 学习之路 1(简单入门)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  9. springboot 学习之路 2(注解介绍)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

随机推荐

  1. 【python】django-celery 实现django项目定时任务

    官方:https://pypi.python.org/pypi/django-celery/ 参考:http://www.weiguda.com/blog/73/ 参考:http://www.liao ...

  2. 用odbc连接oracle问题

    如果用11g的客户端,然后通过odbc(远程连接)连接10g的oracle,会出现监听程序无法启动(ORA-12541: TNS: 无监听程序) 此时需要在客户端目录中D:\instantclient ...

  3. go特性学习

    而后我写了一些测试代码: dept1 :=     Dept{         name:     "MySohu",         building: "Intern ...

  4. Eclipse JSP/Servlet 环境搭建

    Eclipse JSP/Servlet 环境搭建 本文假定你已安装了 JDK 环境,如未安装,可参阅 Java 开发环境配置. 我们可以使用 Eclipse 来搭建 JSP 开发环境,首先我们分别下载 ...

  5. Java web--反射(解刨)

    本质:先加载类           再解刨类的方法,字段,构造函数 目的:解刨出构造函数       为了new对象 解刨出字段             为了封装数据进去 解刨方法           ...

  6. {POJ}{动态规划}{题目列表}

    动态规划与贪心相关: {HDU}{4739}{Zhuge Liang's Mines}{压缩DP} 题意:给定20个点坐标,求最多有多少个不相交(点也不相交)的正方形 思路:背包问题,求出所有的正方形 ...

  7. linux 驱动学习笔记01--Linux 内核的编译

    由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...

  8. MySql中的tinying,smallint,int,bigint的类型介绍——转载

    tinyint 从 0 到 255 的整型数据.存储大小为 1 字节. smallint 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据.存储大小为 2 个字节 ...

  9. 9.springMVC中的拦截器

    springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...

  10. http://10.11.112.12:8000/homePage.jsp?loginMode=JS

    sdsad http://svn.paic.com.cn/svn/mis_pac/branches/MIS-PAC5.22.0