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. AX 2012 EP服务器配置多个环境

    AX 2012 如何在一台服务器配置不同环境的EP站点 安装完EP后,修改对应站点的web.config文件,指定需要连接的客户端配置文件路径即可,如下图: ` ``````````````````` ...

  2. 百度地图api简单使用方法

    百度地图API的使用方法   百度地图API 开始学习百度地图API最简单的方式是看一个简单的示例.以下代码创建了一个520x340大小的地图区域并以天安门作为地图的中心: 1. <html&g ...

  3. js编译器的一些简单原理

    有没有发现在写代码的时候,往往会遇到一些莫名其妙的错误,然后时间紧急不得不去网上查阅一些代码.虽然要实现的功能解决了,但是看被拷贝的代码好多真心看不懂,以后遇到诸如此类的问题,如果查阅不到这些代码的话 ...

  4. java 代码判断图片格式后缀名称

    /** * 图片判断 */ private static String getFormatName(Object o) { try { // Create an image input stream ...

  5. myeclipse自动排版

    myeclipse代码排版方式有两种: 1. ctr+f 实现自动排版: 2. myeclipse->Preference->Java->Editor->Sava Action ...

  6. JS跨域知识整理

    在“跨域”一词经常性地出现以前,我们其实已经频繁地使用它了.如在A网站的img,src指向B网站的某一图片地址,毫无疑问,这在通常情况下都是能正常显示的(且不论防盗链技术):同样,可以使script标 ...

  7. shell-自动更改LINUX服务器IP

    #!/bin/bash echo  echo   ==  fi i= newgateway= newhostname= cat >>$ipfile<<EOF IPADDR=&q ...

  8. [翻译]Shape comparison language

        link: http://www.cnblogs.com/yhlx125/p/3635623.html   Shape comparison language 首先说说我遇到的一个问题: IR ...

  9. IRelationalOperator空间关系接口简介

    几何对象之间都存在某种关联关系,如包含,相等,在内部,相交,叠加等.这些关联关系的获得都可以通过IRelationalOperator接口来获得,关系运算是在两个几何对象间进行的,通过IRelatio ...

  10. Android文件系统的结构

    Android 4.2.2 版本的文件系统 内核版本为 3.0.31 版本号为JDQ39 factory//估计是存放网络通信协议的登录密钥的|-- bluetooth|-- hdcp.keys|-- ...