MyBatis学习笔记(一)

Mybatis(前身是iBatis)是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,并使用简单的XML或注解进行配置和原始映射,用以将接口和Java的POJO映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。

MyBatis学习笔记(一)_第1张图片

1.查询客户


在实际开发中,查询操作通常都会涉及单条数据的精确查询,以及多条数据的模糊查询。下面使用Mybatis框架来实现这两种查询。

1.1 在mysql数据库中,创建一个名为mybatis的数据库,在此数据库中创建一个t_customer表,同时预先插入几条数据。SQL语句如下:

//创建一个名为mybatis的数据库
CREATE DATABASE mybatis;
//使用mybatis数据库
USE mybatis;
//创建一个名称为t_customer的表
CREATE TABLE t_customer(
id int(32) PRIMARY KEY AUTO_INCRENMENT,
username varchar(50),
jobs varchar(50),
phone varchar(16)
);
//预先插入3条数据
INSERT INTO t_customer VALUES ('1','joy','doctor','13745874578');
INSERT INTO t_customer VALUES ('2','jack','teacher','13521210112');
INSERT INTO t_customer VALUES ('3','tom','worker','15179405961');

完成上述操作后,数据库t_customer表中数据如下:

MyBatis学习笔记(一)_第2张图片

1.2 在Eclipse中创建一个名为WebTest的Web项目,将Mybatis的核心JAR包以及MySQL数据的驱动JAR一同添加到项目的的lib目录下:

MyBatis学习笔记(一)_第3张图片

1.3由于mybatis默认使用log4j日志,所以需要在src目录下创建log4j.properties文件,文件内容如下:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.itheima=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

1.4 在src目录下,创建一个com.webtest.po包,在该包下创建持久化类Customer

package com.webtest.po;
/**
 * 客户持久化类
 * */
public class Customer {
    private Integer id;         //主键id
    private String username;    //客户名称
    private String jobs;        //职业
    private String phone;       //电话
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getJobs() {
        return jobs;
    }
    public void setJobs(String jobs) {
        this.jobs = jobs;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString(){
        return "Customer [id=" + id +", username="+username+", jobs="+jobs+", phone="+phone +"]";
    }

}

1.5 在src目录下,创建一个com.webtest.mapper包,在包中创建映射文件CustomerMapper.xml,编辑后如下:



    
    <mapper namespace="com.webtest.mapper.CustomerMapper">
        
        <select id="findCustomerById" parameterType="Integer" resultType="com.webtest.po.Customer">
            select * from t_customer where id = #{id}
        select>    
     mapper>

在定义的SQL语句中,”#{}”相当于一个占位符,而”#{id}”表示该占位符等待接收的参数名称为id。

1.6 在src目录下,创建mybatis的核心配置文件mybatis-config.xml ,如下:



    <configuration>
        
        <environments default="mysql">
            
            <environment id="mysql">
                
                <transactionManager type="JDBC">transactionManager>
                
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                dataSource>
            environment>
        environments>
        
        <mappers>
            <mapper resource="com/webtest/mapper/CustomerMapper.xml"/>
        mappers>
    configuration>

1.7 在src目录下,创建一个com.webtest.test包,在该包下编写测试类MybatisTest,代码如下:

package com.webtest.test;
import java.io.InputStream;
import com.webtest.po.Customer;
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 org.junit.Test;

/**
 * 入门程序测试类
 * */
public class MybatisTest {
    /**
     * 根据客户标号查询客户信息
     * 
     * */
    @Test
    public void findCustomerByIdTest() throws Exception{

        String resource = "mybatis-config.xml";     //1.读取配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);      
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    //2.根据配置文件构建SqlSessionFactory
        SqlSession sqlSession = sqlSessionFactory.openSession();        //3.通过SqlSessionFactory创建SqlSession
        Customer customer = sqlSession.selectOne("com.webtest.mapper.CustomerMapper.findCustomerById",1); //4.SqlSession执行配置文件中定义的SQL,并返回映射结果
        System.out.println(customer.toString());  //打印输出结果
        sqlSession.close();     //5.关闭SqlSession
    }

}

使用JUnit4测试执行findCustomerById()方法后,控制台输出结果,可以看出,使用Mybatis框架已经成功从Mysql数据库中查询了id为1的客户信息。

这里写图片描述

你可能感兴趣的:(MyBatis学习笔记(一))