MyBatis入门教程

MyBatis作为持久性框架,能够简化我们的编程。下面我们学一下如何利用MyBatis进行数据库连接
首先:应该导入myBatis的jar包mybatis-xxx和mysql驱动包mysql-connector-java-x.x.x-bin

1:创建一个数据表
2创建与数据表对应的POJO Role ,字段名要与属性名一致。

package pojo;

public class Role {
    private Long id;
    private String roleName;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note;
    }
    private String note;
}

3:采用XML形式构建映射器,包含一个接口和一个XML
3.1 创建接口RoleMapper ,里面的方法是对Role对象进行操作

package mapper;

import java.util.List;

import pojo.Role;

public interface RoleMapper {
    public int insertRole(Role role);
    public int deleteRole(Long id);
    public int updateRole(Role role);
    public Role getRole(Long id);
    public List<Role> findRoles(String roleName);

}

3.2:创建XML文件,与接口形成映射
RoleMapper.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="mapper.RoleMapper">
 <insert id="insertRole" parameterType="role">
    insert into role(roleName,note) values(#{roleName},#{note})
 </insert>
 <delete id="deleteRole" parameterType="long"> 
 delete from role where id=#{id}
 </delete>
 <update id="updateRole" parameterType="role">
 update role set roleName=#{roleName},note=#{note} where id=#{id}
 </update>
 <select id="getRole" parameterType="long" resultType="role">
 select id,roleName,note from role where id=#{id} <!--id是方法中传递进来的参数-->
 </select>
 <select id="findRoles" parameterType="string" resultType="role">
 select id,roleName,note from role where roleName=#{roleName}
 </select>
 </mapper>

4:配置mybatis-config.xml文件,用于创建SqlSessionFactory对象

<?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>
    <typeAliases >
        <!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名
        <typeAliase  alias="role" type="pojo.Role"/> -->
        <!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
        <package name="pojo"/>
   </typeAliases>

   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC" />
       <!-- 配置数据库连接信息 -->
       <dataSource type="POOLED">
         <property name="driver" value="com.mysql.jdbc.Driver" />
         <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
         <property name="username" value="root" />
         <property name="password" value="1367356" />
       </dataSource>
     </environment>
   </environments>
    <mappers>
    <!-- 注册RoleMapper.xml文件, 
    RoleMapper.xml位于mapper这个包下,所以resource写成mapper/RoleMapper.xml-->
    <mapper resource="mapper/RoleMapper.xml"/>
  </mappers>

 </configuration>

5使用SqlSessionFactoryBuilder来构建SqlSessionFactory
SqlSessionFactoryUtils.java

package utils;

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 SqlSessionFactoryUtils {
    private final static Class<SqlSessionFactoryUtils> Lock = SqlSessionFactoryUtils.class;
    private static SqlSessionFactory SqlSessionFactory = null;

    // 构造函数
    private SqlSessionFactoryUtils() {
    }

    public static SqlSessionFactory getSqlSessionFactory() {

        synchronized (Lock) {
            if (SqlSessionFactory != null) {
                return SqlSessionFactory;
            }
            String resource = "mybatis-config.xml";
            InputStream inputStream;
            try {
                inputStream = Resources.getResourceAsStream(resource);
                SqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
                return null;
            }
            return SqlSessionFactory;
        }
    }

    public static SqlSession openSqlSession() {
        if (SqlSessionFactory == null) {
            getSqlSessionFactory();
        }
        return SqlSessionFactory.openSession();
    }
}

6创建测试类
Chapter3Main.java

package main;

import org.apache.ibatis.session.SqlSession;

import mapper.RoleMapper;
import pojo.Role;
import utils.SqlSessionFactoryUtils;

public class Chapter3Main {
    public static void main(String[] args) {
        SqlSession sqlSession=null;
        try {
            sqlSession=SqlSessionFactoryUtils.openSqlSession();
            RoleMapper roleMapper=sqlSession.getMapper(RoleMapper.class);
            Role role=roleMapper.getRole(1L);
            System.out.println(role.getRoleName());
        } finally {
            // TODO: handle finally clause
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }
}

7:层次结构图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值