持久层框架:Mybatis快速入门

这里写图片描述

Mybatis/Hibernate/JPA作为持久层使用广泛的框架,在实际的项目中有很多的追随者。这篇文章将会通过简单的实例让完全不知道Mybatis为何物的入门者迅速Catchup,对于有一些Java基础的入门者应该能够很快学会如何使用Mybatis进行CRUD(增查改删)操作。

Mybatis的前世今生

时间详细
2002iBATIS一词来源于“internet”+“abatis”,是由Clinton Begin在2002年发起的开放源代码项目。是Apache旗下的项目
2010由ASF(Apache Software Foundation) 迁到了Google Code,并改名为MyBatis
2013迁到Github(https://github.com/mybatis/mybatis-3)。目前最新版本为3.4.1

目标

通过阅读和练习,预定达到以下目标

项番详细内容
No.1Mybatis项目环境搭建
No.2使用Mybatis进行CRUD操作

预估练习时长:15分钟以内

事前准备

下载Mybatis

项目详细信息
类型Mybatis的JAR文件
版本3.4.1
URLhttps://github.com/mybatis/mybatis-3/releases

下载JDBC驱动

项目详细信息
类型MySQL的JDBC驱动
版本5.1.40
URLhttp://dev.mysql.com/downloads/connector/j/

DB设定

DB使用MySQL5.7,详细安装以及创建DB和Table请参看同样是持久层框架的Hibernate的如下入门内容。

项番内容URL
No.1概要及准备http://blog.csdn.net/liumiaocn/article/details/53555787
No.2JDBC方式访问数据库http://blog.csdn.net/liumiaocn/article/details/53559810

创建项目

创建项目,将上面下载的JAR文件加入到Dependencies中即可。

mybatis设定文件

在src根目录创建mybatis-config.xm设定文件,具体内容如下:

<?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="DEV">
    <environment id="DEV">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/hbtestdb?useSSL=false"/>
        <property name="username" value="hbtestuser01"/>
        <property name="password" value="hbtestuser01"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper class="com.liumiao.entity.UserMapper"/>
  </mappers>
</configuration>

mapper也可以使用resouce的方式,使用xml进行mapping,本文将使用注解方式。

创建User类和UserMapper接口

User类

package com.liumiao.entity;

public class User {
  private int userid;
  private String username;
  private String country;

  public User() {
  }

  public User(int userid, String username, String country) {
    this.userid = userid;
    this.username = username;
    this.country = country;
  }

  public int getUserid() {
    return userid;
  }

  public void setUserid(int userid) {
    this.userid = userid;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getCountry() {
    return country;
  }

  public void setCountry(String country) {
    this.country = country;
  }

  @Override
  public String toString(){
    return "User Information: "+userid+":"+username+":"+country;
  }
}

UserMapper接口

package com.liumiao.entity;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

public interface UserMapper {
  @Insert("insert into hbtableuser (userid, username, country) values(#{userid},#{username}, #{country})")
  public int insertUser(User user);

  @Delete("delete from hbtableuser where userid = #{userid}")
  public  int deleteUser(int userid);

  @Delete("delete from hbtableuser")
  public int deleteAllUser();

  @Update("update hbtableuser set username=#{username}, country=#{country} where userid=#{userid}")
  public  int updateUser(User user);

  @Select("select userid, username, country from hbtableuser where userid=#{userid}")
  public User retrieveUserByUserid(int userid);
}

Demo演示代码

import com.liumiao.entity.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.liumiao.entity.User;

public class Main {

    public static void main(String[] args) {
      try {
        //Get SessionFactory & Session
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
        SqlSession sqlSession = sqlSessionFactory.openSession();
        System.out.println("Successfully got sqlSession from session factory.");

        //Get UserMapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //CRUD: Delete All Users
        userMapper.deleteAllUser();
        sqlSession.commit();

        //CRUD: Create: Add user : 1001 liumiaocn
        System.out.println("CRUD: Create: add 1001 ");
        User user = new User(1001,"liumiaocn","China");
        System.out.println("Now Begin to add user 1001: "+ user);
        userMapper.insertUser(user);
        sqlSession.commit();

        System.out.println("CRUD: Create: add 1002 ");
        user = new User(1002,"Michael","PRC");
        System.out.println("Now Begin to add user 1002: "+ user);
        userMapper.insertUser(user);
        sqlSession.commit();
        System.out.println();

        //CRUD: Retrieve:  user : 1001
        System.out.println("CRUD: Retrieve:  1001 ");
        user = userMapper.retrieveUserByUserid(1001);
        sqlSession.commit();
        System.out.println("Retrieved user data: "+user);

        //CRUD: Retrieve:  user : 1002
        System.out.println("CRUD: Retrieve:  1002 ");
        user = userMapper.retrieveUserByUserid(1002);
        sqlSession.commit();
        System.out.println("Retrieved user data: "+user);
        System.out.println();

        //CRUD: Update:  user : 1001
        System.out.println("CRUD: Update:  1001 ");
        User tmpUser = new User(1001,"MichaelLiu","PRC");
        userMapper.updateUser(tmpUser);
        sqlSession.commit();
        System.out.println("Retrieved user data: "+user);

        //CRUD: Retrieve:  user : 1001
        System.out.println("CRUD: Retrieve:  1001 ");
        user = userMapper.retrieveUserByUserid(1001);
        sqlSession.commit();
        System.out.println("Retrieved user data after Update : "+user);
        System.out.println();

        //CRUD: Delete
        System.out.println("CRUD: Delete:  1002 ");
        userMapper.deleteUser(1002);
        sqlSession.commit();

        sqlSession.close();
      }
      catch(Exception e){
        System.out.println("Exception happened...");
        e.printStackTrace();
      }
    }
}

实施结果确认

Successfully got sqlSession from session factory.
CRUD: Create: add 1001 
Now Begin to add user 1001: User Information: 1001:liumiaocn:China
CRUD: Create: add 1002 
Now Begin to add user 1002: User Information: 1002:Michael:PRC

CRUD: Retrieve:  1001 
Retrieved user data: User Information: 1001:liumiaocn:China
CRUD: Retrieve:  1002 
Retrieved user data: User Information: 1002:Michael:PRC

CRUD: Update:  1001 
Retrieved user data: User Information: 1002:Michael:PRC
CRUD: Retrieve:  1001 
Retrieved user data after Update : User Information: 1001:MichaelLiu:PRC

CRUD: Delete:  1002 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值