MyBatis学习(一) 入门+例子

简介

什么是MyBatis?

MyBatis是支持定制化SQL、存储过程以及高级映射的优秀持久层框架。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或者注解,将接口和Java和POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

安装

要使用MyBatis,只需要将mybatis-x.x.x.jar文件置于classpath就可以了。
jar包下载地址为:https://github.com/mybatis/mybatis-3/releases

例子,使用eclipse+MySql

建立java项目并导入所需要的jar包

这里写图片描述

其中必需的jar为:
- mybatis-3.4.4.jar:MyBatis包
- mysql-connector-java-5.1.43-bin.jar:mysql的驱动包
mybatis使用的是3.4.4版本、jdbc使用的是5.1.43版本(版本不重要)

数据库建立表格

这里写图片描述

MyBatis的配置文件

在src根目录建立mysql的配置文件与MyBatis的配置xml
mysql.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
#定义初始连接数
jdbc.initialSize=0
#定义最大连接数
jdbc.maxActive=20
#定义最大空闲
jdbc.maxIdle=20
#定义最小空闲
jdbc.minIdle=1
#定义最长等待时间
jdbc.maxWait=60000

mybatis.cfg.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>

    <!-- 引入外部配置文件,给下面配置使用 -->
    <properties resource="mysql.properties" />

    <!-- 配置myBatis运行环境 -->
    <environments default="guybatis">
        <environment id="guybatis">
            <!-- 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>

建立Bean类

class name: UserBean.java package name: com.guy.mybatis.beans

package com.guy.mybatis.beans;

import java.util.Date;

public class UserBean {

    private Integer id;
    private String username;
    private Date birthday;
    private char sex;
    private String address;

    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 Date getBirthday() {
        return birthday;
    }

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

    public char getSex() {
        return sex;
    }

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

    public String getAddress() {
        return address;
    }

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

    @Override
    public String toString() {
        return "UserBean [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex
                + ", address=" + address + "]";
    }
}

建立操作数据库的接口类与映射xml文件

interface name: UserMapper.java package name: com.guy.mybatis.mapper

package com.guy.mybatis.mapper;

import java.util.List;

import com.guy.mybatis.beans.UserBean;

public interface UserMapper {

    // 插入UserBean到数据库
    public int insertUser(UserBean user);

    // 通过id更新数据
    public int updateUserById(UserBean user, int id);

    // 通过id删除数据
    public int deleteUserById(int id);

    // 通过id查询数据
    public UserBean selectUserById(int id);

    // 得到所有的数据
    public List<UserBean> selectAllUser();
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.guy.mybatis.mapper.UserMapper">
    <!-- 自定义返回结果集合 -->
    <resultMap type="UserBean" id="userMap">
        <!-- 定义Bean属性与表属性的映射关系 -->
        <id property="id" column="id" javaType="java.lang.Integer" />
        <result property="username" column="username" javaType="java.lang.String" />
        <result property="birthday" column="birthday" javaType="java.util.Date" />
        <result property="sex" column="sex" javaType="java.lang.Character" />
        <result property="address" column="address" javaType="java.lang.String" />
    </resultMap>

    <!-- 定义增删除查改的sql -->
    <!-- useGeneratedKeys="true":仅对insert有用,主键自增 -->
    <!-- keyProperty:仅对insert有用,设定主键 -->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into user(username, birthday, sex, address) values
        (#{username}, #{birthday}, #{sex}, #{address})
    </insert>

    <!-- parameterType:查询时使用的条件参数类型 -->
    <!-- resultType:指查询结果返回使用的结果集类型 -->
    <update id="updateUserById" parameterType="int">
        update user set
        username=#{username}, birthday=#{birthday}, sex=#{sex},
        address=#{address} where id=#{id}
    </update>

    <delete id="deleteUserById" parameterType="int">
        delete from user where
        id=#{id}
    </delete>

    <select id="selectUserById" parameterType="int" resultMap="userMap">
        select * from user where id=#{id}
    </select>

    <select id="selectAllUser" resultMap="userMap">
        select * from user
    </select>

</mapper>

在mybatis.cfg.xml中注册UserMapper.xml与配置Bean类别名

<?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>
    <!-- 引入外部配置文件,给下面配置使用 -->
    <properties resource="mysql.properties" />

    <!-- 给bean类起一个别名,在其它位置使用 -->
    <typeAliases>
        <!-- 单独配置,type放bean完整的路径(包名+类名) alias为类的别名 -->
        <!-- <typeAlias type="com.guy.mybatis01.beans.UserBean" alias="UserBean" /> -->
        <!-- 自动扫描指定包名下的类,将类名作为别名 -->
        <package name="com.guy.mybatis.beans"/>
    </typeAliases>

    <!-- 配置myBatis运行环境 -->
    <environments default="guybatis">
        <environment id="guybatis">
            <!-- 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>

    <mappers>
        <!-- 单独配置某个bean mapper -->
        <!-- <mapper resource="com/guy/mybatis/mapper/UserMapper.xml" /> -->
        <!-- 自动扫描某包下面的mapper -->
        <package name="com/guy/mybatis/mapper"/>
    </mappers>

</configuration>

至此已经配置完成,使用步骤

private static SqlSessionFactory sessionFactory;

private SqlSession session;
private UserMapper userMapper;

try {
    // 首先读取mybatis.cfg.xml得到Reader对象
    Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
    // SqlSessionFactoryBuilder通过reader得到SqlSessionFactory
    sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    // 再通过SqlSessionFactory的openSession方法打开session得到SqlSession对象
    session = sessionFactory.openSession();
    // 拿到mapper进行调用
    userMapper = session.getMapper(UserMapper.class);
} catch (IOException e) {
    e.printStackTrace();
}

通过userMapper去调用里面的方法

userMapper.insertUser(user);

整个项目结构

这里写图片描述

代码链接:http://download.csdn.net/download/file_tang/9927765

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值