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. sql日期函数操作

    sql语句获取本周.本月.本年数据 SQL Serverselect * from [data] where  DATEPART(m,[date])=2 Accessselect * from [da ...

  2. oracle 认证方式

    Oracle登录的时候有两种认证方式,一种是“操作系统认证”,一种是“口令文件认证”.1.当采取操作系统认证的时候,在本地用任何用户都可以以sysdba登陆:(默认方式)2.当采取口令文件认证的时候, ...

  3. WebService到底是什么?

    一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...

  4. CentOS 问题集锦

    在CentOS 6更新后,不可避免的会在启动选项中产生多个内核选项,一个内核文件大概占100兆左右(一般100M以下),可以使用以下命令进行删除多余的内核. 1.首先列出系统中正在使用的内核: # u ...

  5. guava cache

    适用场景 缓存在很多场景下都是相当有用的.例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存. Guava Cache与ConcurrentMap很相似,但 ...

  6. Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、

    查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...

  7. MAT内存问题分析定位

    MAT内存问题分析定位 1.下载安装MemoryAnalyzer工具. 2.使用DDMS将对应线程的内存日志导出来后,使用hprof-conv工具进行转换,用MAT打开转换后的hprof文件.

  8. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  9. jquery ajax load

    jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selector). ...

  10. Net分布式系统之二:CentOS系统搭建Nginx负载均衡(下)

    上一篇文章介绍了VMWare12虚拟机.Linux(CentOS7)系统安装.部署Nginx1.6.3代理服务做负载均衡.接下来介绍通过Nginx将请求分发到各web应用处理服务. 一.Web应用开发 ...