上一章:MyBatis.001 学习巴提斯!

下一章:MyBatis.003 使用properties文件!

参考

  • 请注意后面文章中的注释

  • MyBatis官方入门:http://mybatis.github.io/mybatis-3/zh/getting-started.html

  • 源代码下载:http://down.51cto.com/data/1874775

代码结构

1. config:配置文件目录
2. pojo:Bean类包
3. controller:数据接口
4. sql:数据库源文件

【狂人小白】MyBatis.002 第一个查询!_第1张图片

数据库创建

CREATE DATABASE  IF NOT EXISTS `mybatis`;

USE `mybatis`;
DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `phone` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

LOCK TABLES `users` WRITE;

INSERT INTO `users` VALUES (1,'jimmy.song',22,'13810001234'),(2,'sunspot',24,'13812341234');

UNLOCK TABLES;

创建链接数据库的配置

位置:cc/fozone/demo/mybatis/config/mybatis.config.xml





    
    
        
            
            
                
                
                
                
                
                
                
                
                
            
        
    
    
    
    
        
    
    

创建User类

位置:cc/fozone/demo/mybatis/pojo/User.java

package cc.fozone.demo.mybatis.pojo;

public class User {
    private int id;
    private String name;
    private int age;
    private String phone;
    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;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String toString(){
        return "{id:"+id+",name:"+name+",age:"+age+",phone:"+phone+"}";
    }
}

创建User的数据接口

位置:cc/fozone/demo/mybatis/controller/IUserController.java

package cc.fozone.demo.mybatis.controller;

import java.util.List;

import cc.fozone.demo.mybatis.pojo.User;

public interface IUserController {
    // 查询所有的用户
    public List getAllUsers();
    
    // 根据电话查询用户
    public User getUser(String phone);
}

创建User表对应的映射配置

位置:cc/fozone/demo/mybatis/config/mapper/User.mapper.xml






    
    
        
        
        
        
    
    
    
    
         
    
    
    
    
         
    

模拟服务调用

位置:cc/fozone/demo/mybatis/App.java

package cc.fozone.demo.mybatis;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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 cc.fozone.demo.mybatis.controller.IUserController;
import cc.fozone.demo.mybatis.pojo.User;

/**
 * Hello world!
 *
 */
public class App {
    // 数据库链接配置
    private static final String CONFIG = "cc/fozone/demo/mybatis/config/mybatis.config.xml";
    // SQL会话工厂
    private SqlSessionFactory factory;

    public App() {
        // 初始化
        this.init();
    }

    // 初始化SQL会话工厂
    private void init() {
        InputStream input;
        try {
            input = Resources.getResourceAsStream(CONFIG);
            this.factory = new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    // 查询所有用户列表
    public List getUsers() {
        // 打开会话
        SqlSession session = this.factory.openSession();
        
        // 根据映射实例化控制器对象,这里的IUserController.class与Mapper配置中的namespace一致
        IUserController controller = session.getMapper(IUserController.class);

        // 获得所有用户
        List list = controller.getAllUsers();
        
        // 关闭会话
        session.close();

        return list;
    }

    // 根据电话号查询用户
    public User getUser(String phone) {
        User user = null;
        
        // 会话
        SqlSession session = this.factory.openSession();

        IUserController controller = session.getMapper(IUserController.class);
        
        // 查询用户,这里传入的参数会被替换在Mapper中的#{phone}占位符
        user = controller.getUser(phone);
        
        session.close();
        
        return user;
    }

}

创建测试用例

位置:cc/fozone/demo/mybatis/AppTest.java

package cc.fozone.demo.mybatis;

import java.util.List;

import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

import cc.fozone.demo.mybatis.pojo.User;

public class AppTest {
    private App app;
    @Before
    public void setUp() throws Exception {
        app = new App();
        assertNotNull(app);
    }

    @Test
    public void testList() {
        List list = app.getUsers();
        assertEquals(2,list.size());
    }
    
    @Test
    public void testUser(){
        User user = app.getUser("13810001234");
        assertNotNull(user);
        assertEquals("jimmy.song", user.getName());
    }

}


结果

AppTest.java文件鼠标右键 -> Run -> JUnit Test

【狂人小白】MyBatis.002 第一个查询!_第2张图片


上一章:MyBatis.001 学习巴提斯!

下一章:MyBatis.003 使用properties文件!