Java项目中使用Mybatis入门程序

wanna 关注

2017.03.23 14:33* 字数 270 阅读 1243评论 0喜欢 5

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

欢迎访问本人博客:http://wangnan.tech

什么是 MyBatis ?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

MyBatis github

https://github.com/mybatis/mybatis-3

MyBatis 文档

http://mybatis.github.io/mybatis-3/zh/index.html

入门程序

想要使用 MyBatis 只需将 mybatis-x.x.x.jar 文件置于 classpath 中。
如果使用 Maven 构建项目,则需将下面的 dependency 置于 pom.xml 中:

    <dependency> 
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId> 
        <version>3.8.2</version> 
    </dependency>

我选择第二种,在Eclipse中新建一个maven项目

项目结构:

01.jpg

各文件介绍:

  • pom文件:由于使用了mySQL数据库,这里还依赖了一个mySQL驱动包
  • 实体类User :
  • UserMapper接口:
  • UserMapper接口的实现,userMapper.xml:
  • 数据源配置 configuration.xml
  • 测试类MyBatisTest:
     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
      <modelVersion>4.0.0</modelVersion>  
      <groupId>Mybatis</groupId>  
      <artifactId>Mybatis</artifactId>  
      <version>0.0.1-SNAPSHOT</version>  
      <dependencies> 
        <dependency> 
          <groupId>org.mybatis</groupId>  
          <artifactId>mybatis</artifactId>  
          <version>3.2.8</version> 
        </dependency>  
        <dependency> 
          <groupId>mysql</groupId>  
          <artifactId>mysql-connector-java</artifactId>  
          <version>5.1.34</version> 
        </dependency> 
      </dependencies> 
     </project>
  package com.mybatis.domain;
 
 
    public class User {
         private String name;
         private Integer age;
         
         public String getName() {
            return name;
         }
         
         public void setName(String name) {
         this.name = name;
         }
         
         public Integer getAge() {
         return age;
         }
         
         public void setAge(Integer age) {
            this.age = age;
         }
         
    }
package com.mybatis.mapper; 
import com.mybatis.domain.User; 
 
public interface UserMapper { 
    public User findById(String 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"> <!--相当于UserMapper接口的实现 namespace必须是UserMapper类路径-->
    <mapper namespace="com.mybatis.mapper.UserMapper"> 
        <!-- findById必须和接口中的方法名一样 返回一个User--> 
        <select id="findById" parameterType="String"
        resultType="com.mybatis.domain.User"> 
        select * from user where id=#{id} 
        </select> 
    </mapper>
    <?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> 
        <!--数据源配置 -->
        <environments default="development"> 
            <environment id="development"> 
                <transactionManager type="jdbc" /> 
                <dataSource type="POOLED"> 
                    <property name="driver" value="com.mysql.jdbc.Driver" /> 
                    <property name="url" value="jdbc:mysql://localhost:3306/test" />
                    <property name="username" value="root" /> 
                    <property name="password" value="123456" /> 
                </dataSource>
            </environment> 
        </environments> <mappers> 
            <!--userMapper.xml装载进来 --> 
            <mapper resource="userMapper.xml" /> 
        </mappers> 
    </configuration>
package com.mybatis.test;
 
import com.mybatis.domain.User;
 
import com.mybatis.mapper.UserMapper;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import java.io.IOException;
 
 
public class MyBatisTest {
    /** * MyBatis SqlSessionFactory * SqlSessionFactory????SqlSession????????????SqlSession??????????commit?rollback?close???? * @return */ private static SqlSessionFactory getSessionFactory() {
        SqlSessionFactory sessionFactory = null;
        String resource = "configuration.xml";
        try {
            sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(
                        resource));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sessionFactory;
    }
 
    public static void main(String[] args) {
        SqlSession sqlSession = getSessionFactory().openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.findById("1");
        System.out.println(user.getName());
    }
}
 

数据库中插入条数据:
id=”1” name=”wn” age=”23”

java 学习笔记--mybatis 三剑客(mybatis)的更多相关文章

  1. Java学习笔记-spring整合mybatis

    这个项目就是一个例子,只有添加图书的功能: 项目架构: resource: 整合流程: 1.pom文件节点,这两个是整合用的,其他节点不再赘述: <!-- https://mvnreposito ...

  2. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  3. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  6. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  10. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

随机推荐

  1. Node.js nvshens图片批量下载爬虫1.01

    //====================================================== // nvshens图片批量下载爬虫1.01 // 用最近的断点续传框架改写原有1.0 ...

  2. 正则表达式匹配a标签或div标签

    这里以a标签为例 a标签的href var a='<P><A href=\'~abc/ccg/ab.jpg\' width="3">文字</A> ...

  3. MPlayer源代码分析

    http://blog.csdn.net/leixiaohua1020/article/details/11885509 一.Mplayer支持的格式 MPlayer是一个LINUX下的视频播放器,它 ...

  4. input输入框禁止显示历史记录

    有时我们在设计网页时不想让表单保存用户输入历史记录,比如一些隐私数据 <input name="test" type="text" id="te ...

  5. Android ANR发生原因总结

    ANR(Application Not Responding) Android系统中应用无响应 是Android系统中比较常见的问题,当出现ANR时一般情况会弹出一个带有以下文字的对话框提示: Act ...

  6. Navicat Premium如何打开SQL文件.MDF和.LDF文件

    相信大家再装SQL Server时都会遇到一件很头疼的事情--装完SQL server之后发现没有启动程序.没有经验的会以为SQL SERVER安装失败了于是选择重装.可是呵呵,重装了4,5次还是一样 ...

  7. 【Windows】免费图片提取文字的方法

    今天意外的看到一个可以提取图片中文字的网站,自己试了下,提取效果还不错 网址为: https://zhcn.109876543210.com/ 现在有图片如下 我想从中提取的文字 1.打开网址,上传图 ...

  8. 关于同一线程两次调用EnterCriticalSection的测试

    #include "stdafx.h" #include <iostream> using namespace std; #include <windows.h& ...

  9. osgi应用使用桥接的方式打成war包部署在websphere上时遇到的与cxf相关的问题

    原来我们的程序都是基于Equinox架构的,可是后面由于要实现打成war包在中间件中部署的需求,使用了eclipse官方提供的桥接方式实现. 桥接的部分后面有时间了我专门写一个文章来说,不明确的临时请 ...

  10. [转载]一种高性能Hierarchical RBAC实现方案

    背景 框图 上图中,Role和被设置Permission的Resource都是可以有任意层级继承关系的. 举例 举一个网站的例子来说: 如果,User表示网站用户:Role表示角色:Resource表 ...