MyBatis学习(1)--MyBatis入门

1、MyBatis介绍

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

这意味着我们不必自己去手写DAO(数据访问层),也不必写DBHelper类将数据库查询出的结果映射给实体类了,只需通过配置和注解就可以完成。这大大省去了去编写DAO的死板代码,从而程序员能够有更多的精力去负责编写自己的业务代码。

2、MyBatis环境配置

2.1、首先创建一个JavaWeb工程

如:

2.2、导入相应的包jar

  1. mysql驱动包 mysql-connector-java-5.0.8-bin.jar
  2. mybatis包 mybatis-3.4.1.jar

将它们放在lib文件夹下并build path

2.3、创建表

在mysql中创建一个表 如:

 CREATE TABLE `users` (
      `id` int(11) NOT NULL,
      `name` varchar(40) DEFAULT NULL,
      `password` varchar(40) DEFAULT NULL,
      `email` varchar(60) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      PRIMARY KEY (`id`)
 )

并插入数据。

insert into users(id,name,password,email,birthday) values(1,'zs','123456','zs@sina.com','1980-12-04');

3、创建mybaitis配置文件

在src目录下创建conf.xml文件和db.properties文件。

conf.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>
            <!-- 引用db.properties -->
            <properties resource="db.properties" /> 
            <!-- development:开发模式 
                 work:工作模式
            -->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>

        <mappers>
            <!-- 注册userMapper.xml映射文件, 
            usersMapper.xml位于io.xuda.mapping这个包下,所以resource写成io/xuda/mapping/usersMapper.xml-->
            <mapper resource="io/xuda/mapping/usersMapper.xml"/>
        </mappers>
    </configuration>

db.properties如下:

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1/eden_db
    jdbc.username=root
    jdbc.password=root

配置文件conf.xml是mybatis 用来建立 sessionFactory,里面主要包含了数据库连接相关内容,还有 注册映射实体类的xml文件

4、创建实体类和映射文件

创建定义表中相应的实体类Users.java和映射文件usersMapper.xml

实体类Users.java如下:

    package io.xuda.beans;

    import java.sql.Date;

    public class Users {
        private int id;
        private String name;
        private String password;
        private String email;
        private Date birthday;

        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 String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        @Override
        public String toString() {
            return "Users [id=" + id + ", name=" + name + ", password=" + password
                    + ", email=" + email + ", birthday=" + birthday + "]";
        }
    }

映射文件usersMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
    例如namespace="io.xuda.mapping.usersMapper"就是io.xuda.mapping(包名)+userMappers(userMappers.xml文件去除后缀)
     -->
    <mapper namespace="io.xuda.mapping.usersMapper">
        <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
        resultType="io.xuda.beans.Users"就表示将查询结果封装成一个Users类的对象返回
        User类就是users表所对应的实体类
        -->
        <!-- 
            根据id查询得到一个users对象
         -->
        <select id="getUsers" parameterType="int" 
            resultType="io.xuda.beans.Users">
            select * from users where id=#{id}
        </select>
    </mapper>

在usersMapper.xml 文件里面主要是定义各种 SQL 语句,以及这些语句的参数,以及要返回的类型等等。

5、测试

前四个步骤算是基本搭建完成mybatis环境了,下面我们就来写个Test.java测试一下。

Test.java如下:

    package io.xuda.test;

    import io.xuda.beans.Users;

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

    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;

    public class Test {

        public static void main(String[] args) {
            //mybatis的配置文件
            String resource = "conf.xml";
            //使用类加载器加载mybatis的配置文件 (它也加载关联的映射文件)
    //      InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);

            //构建sqlSession的工厂 
    //      SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(is);
            Reader reader=null;
            try {
                // 读取conf.xml配置文件
                reader = Resources.getResourceAsReader(resource);
            } catch (IOException e) {
                e.printStackTrace();
            }
            SqlSessionFactory sessionFactory =new SqlSessionFactoryBuilder().build(reader);

            SqlSession session = sessionFactory.openSession();

            String statement = "io.xuda.mapping.usersMapper.getUsers"; // 映射sql的标识字符串


            Users user =null;
            try {
                user = session.selectOne(statement,1);
            } finally{
                session.close();
            }

            System.out.println(user);

        }

    }

测试结果:

附:mybatis包 mybatis-3.4.1.jar的下载地址

源码:https://github.com/xuda27/MyBatis_Study/tree/master

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值