继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

MyBatis学习笔记(一、简单的MyBatis-javaweb项目实例)

song先生
关注TA
已关注
手记 41
粉丝 218
获赞 1546

简介

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

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

与它相类似的还有hibernate在这里我就不多说了。mybatis与hibernate的对比详见MyBatis和Hibernate相比,优势在哪里?

简单例子

1》首先我们创建一个java web项目
创建javaweb项目
2》导入相应的jar包
导入相应的jar包

mybatis需要jar包:mybatis-3.4.1.jar

mysql驱动jar包:mysql-connector-java-5.1.39.-bin.jar

日志记录jar包:log4j-1.2.17.jar
3》创建数据库数据
创建数据库表
4》添加mybatis配置文件mybatis-config.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>
 <typeAliases>
 <!--类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余  -->
  <package name="com.songci.mybatis.model"/>
 </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://127.0.0.1:3306/test?useUnicode=true"/>
                <property name="username" value="root" />  
                <property name="password" value="123456" />  
            </dataSource>  
        </environment>  
    </environments>  
    <mappers>
    <!-- 映射文件方式1,一个一个的配置 -->
    <mapper resource="com/songci/mybatis/mapper/StudentMapper.xml"/>
    <!-- 映射文件方式2,自动扫描包内的Mapper接口与配置文件
         <package name="com/songci/mybatis/mapper"/>-->
    </mappers>
 </configuration>

5》实体类对象的创建

package com.songci.mybatis.model;

public class Student {

    private int id;
    private String name;
    private String address;
    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 getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", address=" + address
                + "]";
    }

}

6》创建DAO层的接口方法

package com.songci.mybatis.dao;

import com.songci.mybatis.model.Student;

public interface StudentDao {

//保存学生信息
public   void saveStudent(Student student);
//修改学生信息
public  void updateStudent(Student student);

}

7》mapper映射文件

<?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">
<!-- 首先来解析 namespace:   命名空间,此属性通常用来映射Dao层接口. -->
<mapper namespace="com.songci.mybatis.dao.StudentDao">
<!-- id: 对应Dao层接口方法名    parameterType:指定输入参数类型 -->
 <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中     -->
<insert id="saveStudent" parameterType="Student" 
 useGeneratedKeys="true"  keyColumn="id" keyProperty="id">
INSERT INTO `studentInfo`(`name`,`address`)values
(#{name},#{address})
</insert>

<update id="updateStudent" parameterType="Student">
update studentInfo set name=#{name} ,address=#{address} where id=#{id}
</update>

</mapper>

8》创建测试类

package com.songci.mybatis.test;

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;

import com.songci.mybatis.dao.StudentDao;
import com.songci.mybatis.model.Student;

public class MybatisTest {

  public static void main(String[] args) throws IOException {

      /***
       * mybatis 使用注意事项
       * 1:  加载 mybatis 配置文件
       */
      String resource = "mybatis-config.xml";
      InputStream inputStream = Resources.getResourceAsStream(resource);
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

           /**
            *2: 从mybatis 数据连接池中获取 session连接
            *    并选择相应的接口类《mapper》 
            */
            SqlSession session = sqlSessionFactory.openSession();
            StudentDao sutdentDao =  (StudentDao) session.getMapper(StudentDao.class);
            Student student =new  Student();
            student.setName("张三");
            student.setAddress("西湖的小桥边");

            //student.setId(id);我们并没有设置id--------》useGeneratedKeys="true"和keyProperty(id)的作用

            sutdentDao.saveStudent(student);
            System.out.println(student);
            //3:提交事务 仅在【保存数据 删除数据 更新数据】
            session.commit();
           //4:关闭session连接 ---放回至mybatis维护连接池中
            session.close();

}
}

9》最终测试结果显示
图片描述
图片描述

推荐网站

  1. MyBatis官方文档
  2. MyBatis相关工具
打开App,阅读手记
18人推荐
发表评论
随时随地看视频慕课网APP

热门评论

请问可否提供一下jar包的地址呢?非常感谢

谢谢分享!分享快乐!

你好!可以分享一下源代码吗?

查看全部评论