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函数,lambda表达式,三目运算,列表解析,递归

    一.自定义函数 定义函数时,函数体不执行:只有在调用函数时,函数体才执行.函数的结构: 1. def 2. 函数名 3. 函数体 def func_name(): 函数体 4. 返回值 如果没有声明返 ...

  2. Xcode常用的快捷键有哪些?

    作者:吴白 原文链接:http://www.jianshu.com/p/de7806f6143b 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现 ...

  3. numpy.linalg.eig

    1.转置对于二维数组有用,对一位数组无效 2.理解特征值和特征向量的对应关系 a=np.array([[1 ,2, 3],[4, 5, 6],[7, 8, 9]]) a Out[27]: array( ...

  4. IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。

  5. Substance 6 设置 watermark(水印)

    http://www.qumake.com/articles/2011/04/18/1303094833690.html ——————————————————————————————————————— ...

  6. FTP\TFTP

    FTP是文件传输协议的英文简写. FTP 文件传输协议 基于TCP,20和21端口. TFTP 简单文件传输协议,基于UDP,69 只能传输32Mb以下文件,不需要提供账号和密码.tftp xxx.x ...

  7. javascript中的innerHTML是什么意思,怎么个用法?

    innerHTML在JS是双向功能:获取对象的内容 或 向对象插入内容:如:<div id="aa">这是内容</div> ,我们可以通过 document ...

  8. Cisco SG300系列交换机划分VLan与普通路由器连接配置

    思科SG300系列三层交换机是针对中小企业设计的一款产品,Marvell 主控和128M Ram,最大支持52个千兆RJ45端口和2个SFP端口,因公司业务需求,最近也进行了解和配置,具体型号为 SG ...

  9. vi 文字处理器

    vi 的使用 基本上 vi 共分为三种模式,分别是『一般模式』. 『编辑模式』与『指令列命令模式』三种! 这三种模式的作用是: 一般模式: 以 vi 处理一个档案的时后,一进入该档案就是一般模式了.在 ...

  10. 使用rownum对oracle分页

    以Student表为例进行分页 建表及插入 -- 有表结构如下 create table STUDENT ( sno INTEGER, sname ), sage INTEGER ); -- 插入数据 ...