MyBatis入门学习笔记之一

1.MyBatis介绍

 MyBatis是一个优秀的持久性框架,它对jdbc的操作进行封装,是开发者只需关注sql本身,而不需花精力去处理注册驱动、创建连接,创建statement等繁杂的过程。

    原理:MyBatis通过xml或注解的方式将要执行的各种statement配置起来,通过java对象和statement的sql进行映射生成最终执行的sql语句,最后由MyBatis框架执行sql语句映射到java对象并返回。

2.MyBatis入门

mybatis的核心架构 

图片转载至服务器之家  连接:

MyBatis开发步骤

1.创建持久化po类。

2.创建全局配置文件SqlMapConfig.xml

3.编写映射文件Mapper.xml

4.在SqlMapConfig.xml中加载映射文件

5.编写测试程序

  测试程序的步骤如下:

  • 读取配置文件
  • 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂

  • 通过SqlSessionFactory创建SqlSession

  • 调用SqlSession中的操作数据库的方法
  • 关闭SqlSession

 案例:

1编写持久类

package oyb.domain;

import java.io.Serializable;
import java.util.Date;

public class User  implements Serializable{

    private  int id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

编写全局配置文件SqlMapConfig.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>

    <!--配置mybatis的环境信息-->
    <environments default="development">
        <environment id="development">
            <!--配置JDBC事务控制,由mybatis管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源,采用dbcp连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatisday01?useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

在src目录下创建sqlmap这个包,在包里面创建User.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="user">
    <!--
        id:statement的id,要求在命名空间内唯一
        parameterType:传入的参数类型
        resultType:返回的类型
        #{id}:表示该占位符待接收参数的名称为id。
    -->
    <select id="findUserById" parameterType="int" resultType="oyb.domain.User">
        SELECT * FROM USER WHERE id = #{id}
    </select>
</mapper>

在SqlMapConfig.xml中配置映射

<mappers>
        <mapper resource="oyb/sqlmap/User.xml"></mapper>
</mappers>

测试类:

package oyb.test;

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;
import oyb.domain.User;

import java.io.IOException;
import java.io.InputStream;


public class test {

    @Test
    public void test() throws Exception {
        //读取配置文件
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        //通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //通过SqlSessionFactory创建SqlSession
        SqlSession sqlSession = sessionFactory.openSession();
        //调用SqlSession操作数据库的方法
        User user = sqlSession.selectOne("findUserById", 28);
        System.out.println(user);
    }
}

猜你喜欢

转载自www.cnblogs.com/ouyangbo/p/10629820.html