mybatis入门

为简单的入门mybatis,理解其基本原理,现新建一个java项目(后期和spring整合,再创建web项目)。

1. 首先建立项目java project

这里写图片描述

创建好java项目后,在项目里new一个Source Folder里面放一些配置文件:日志记录文件、mysql驱动配置文件、数据库连接配置文件;并新建一个folder文件夹,将mybatis需要jar包:mybatis-3.3.0.jar
mysql驱动jar包:mysql-connector-java-5.1.15.-bin.jar
日志记录jar包:log4j.jar
分别添加进去并选择Build Path ——>add to build path导入Referenced Libraries中。

2.创建数据库,建立emp表

这里写图片描述

3.数据库连接配置jdbc.properties

#数据驱动
jdbc.driver=com.mysql.jdbc.Driver
#数据库连接属性
jdbc.url=jdbc:mysql://localhost:3306/employ?useUnicode=true&characterEncoding=UTF-8
#用户名
jdbc.username=root
#密码
jdbc.password=123

4.mybatis配置文件mybatisConfig.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">

<!--mybatis的配置文件 -->
<configuration>

    <!-- 引入外部配置文件 -->
    <properties resource="jdbc.properties"></properties>

    <!--和spring整合后environments配置将废除 -->
    <!-- 配置mybatis运行环境 -->
    <environments default="cybatis">
        <environment id="cybatis">
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="JDBC" />

            <!-- mybatis提供了3 种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <!--数据库连接池 -->
        <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>
</configuration>

5.创建对应的实体对象model

package cuijiao.mybatis.java.model;

import java.util.Date;

/**
 * @author cuijiao
 *
 */
public class Emp {
    private String empId;
    private String empName;
    private byte sex;
    private Float salary;
    private Date birthday;
    private Integer deptId;

    public String getEmpId() {
        return empId;
    }

    public void setEmpId(String empId) {
        this.empId = empId;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public byte getSex() {
        return sex;
    }

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

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    public Integer getDeptId() {
        return deptId;
    }

    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }

    @Override
    public String toString() {
        return "Emp [empId=" + empId + ", empName=" + empName + ", sex=" + sex + ", salary=" + salary + ", birthday="
                + birthday + ", deptId=" + deptId + "]";
    }

}

6.创建方法接口EmpDao.java和定义操作empr表的sql映射文件EmpMapper.xml

EmpDao.java提供简单的查询功能

package cuijiao.mybatis.java.dao;

import cuijiao.mybatis.java.model.Emp;

/**
 * @author cuijiao
 *
 */
public interface EmpDao {
    Emp selectEmp(String empId);
}

SQL映射文件有些顶级的标签
resultMap——最复杂也最常用,用来封装数据库结果集对象
sql——可以重用的SQL块,也可以被其他语句引用
select——映射查询语句
update——映射更新语句
insert——映射插入语句
delete——映射删除语句

EmpMapper.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="cuijiao.mybatis.java.dao.EmpDao">
    <!-- 在各种标签中的id属性必须和接口中的方法名相同 , id必须是唯一。 parameterType:方法的参数类型,resultType:方法返回的结果集类型 -->
    <!-- #{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值 -->

    <select id="selectEmp" resultType="cuijiao.mybatis.java.model.Emp"
        parameterType="java.lang.String">
        select * from emp where empId=#{empId}
    </select>
</mapper>

7.此时需要在mybatis配置文件中注册EmpMapper.xml,给model起别名

<?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">

<!--mybatis的配置文件 -->
<configuration>

    <!-- 引入外部配置文件 -->
    <properties resource="jdbc.properties"></properties>


    <!-- 为JAVA Bean起类别名 -->
    <typeAliases>
        <!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名 -->
        <!-- <typeAlias type="cuijiao.mybatis.java.model.Emp" alias="emp" /> -->
        <!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
        <package name="cuijiao.mybatis.java.model" />
    </typeAliases>

    <!--和spring整合后environments配置将废除 -->
    <!-- 配置mybatis运行环境 -->
    <environments default="cybatis">
        <environment id="cybatis">
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="JDBC" />

            <!-- mybatis提供了3 种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <!--数据库连接池 -->
            <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>

    <!--和spring整合后不需要专门配置,加注解即可@Mapper -->
    <mappers>
        <!-- 告知映射文件方式1,一个一个的配置 -->
        <mapper resource="cuijiao/mybatis/java/dao/EmpMapper.xml" />
        <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
        <!-- <package name="cuijiao/mybatis/java/dao/" /> -->
    </mappers>
</configuration>

8.建一个工具类用来获取mybatis提供的sqlSession

package cuijiao.mybatis.java.util;

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

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 MybatisUtil {
    /**
     * SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用
     * SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次, 最简单的就是使用单例模式或者静态单例模式
     */
    public static SqlSessionFactory sessionFactory;
    static {

        try {
            // 使用MyBatis提供的Resources类加载mybatis的配置文件
            // Reader is = Resources.getResourceAsReader("mybatisConfig.xml");
            InputStream is = Resources.getResourceAsStream("mybatisConfig.xml");
            // 构建sqlSession的工厂
            sessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    // 创建能执行映射文件中sql的sqlSession
    public static SqlSession getSession() {
        return sessionFactory.openSession();
    }

}

9.写个测试,测试查询语句从数据库拿数据

package cuijiao.mybatis.java;

import org.apache.ibatis.session.SqlSession;

import cuijiao.mybatis.java.model.Emp;
import cuijiao.mybatis.java.util.MybatisUtil;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        excute();
    }

    private static void excute() {
        SqlSession session = MybatisUtil.getSession();
        // Mapper mapper=session.getMapper(EmpDao.class);
        Emp emp = session.selectOne("cuijiao.mybatis.java.dao.EmpDao.selectEmp", "2222");
        // session.commit();//增删改需要事务提交
        session.close();// 关掉sqlSession
        System.out.println(emp);
    }
}

运行结果:
Emp [empId=2222, empName=王吉, sex=0, salary=10006.0, birthday=Thu Feb 15 00:00:00 CST 1996, deptId=4]

SqlSession 接口定义的方法:
selectOne(string statement,object param)
泛型方法,参数statement表示使用的查询sql语句,参数param表示需要用户传入的实参,即sql语句绑定的实参

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值