【Mybatis】(一)MyBatis入门 & 第一个MyBatis实例

简介: 【Mybatis】(一)MyBatis入门 & 第一个MyBatis实例

文章目录


1、MyBatis简介


2、Mybatis第一个程序

2.1 准备开发环境

2.2 添加jar包

2.3 连接数据库和表

2.4 使用Mybatis查询数据


3、持久化与ORM


4、MyBatis的开发步骤小结


1、MyBatis简介


MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。


  • 半自动化的ORM实现
  • DAO层
  • 动态SQL
  • 小巧灵活、简单易学


2、Mybatis第一个程序


2.1 准备开发环境

image.png


2.2 添加jar包

image.png


2.3 连接数据库和表

image.png

数据库名为 smbms,表名为 smbms_user。


2.4 使用Mybatis查询数据


1、创建对应于数据库字段的实体类

package cn.kgc.entity;
import java.util.Date;
public class User {
  private Integer id; //id 
  private String userCode; //用户编码
  private String userName; //用户名称
  private String userPassword; //用户密码
  private Integer gender;  //性别
  private Date birthday;  //出生日期
  private String phone;   //电话
  private String address; //地址
  private Integer userRole;    //用户角色
  private Integer createdBy;   //创建者
  private Date creationDate; //创建时间
  private Integer modifyBy;     //更新者
  private Date modifyDate;   //更新时间
  private Integer age;//年龄
  private String userRoleName;    //用户角色名称
  public String getUserRoleName() {
  return userRoleName;
  }
  public void setUserRoleName(String userRoleName) {
  this.userRoleName = userRoleName;
  }
  public Integer getAge() {
  /*long time = System.currentTimeMillis()-birthday.getTime();
  Integer age = Long.valueOf(time/365/24/60/60/1000).IntegerValue();*/
  Date date = new Date();
  Integer age = date.getYear()-birthday.getYear();
  return age;
  }
  public Integer getId() {
  return id;
  }
  public void setId(Integer id) {
  this.id = id;
  }
  public String getUserCode() {
  return userCode;
  }
  public void setUserCode(String userCode) {
  this.userCode = userCode;
  }
  public String getUserName() {
  return userName;
  }
  public void setUserName(String userName) {
  this.userName = userName;
  }
  public String getUserPassword() {
  return userPassword;
  }
  public void setUserPassword(String userPassword) {
  this.userPassword = userPassword;
  }
  public Integer getGender() {
  return gender;
  }
  public void setGender(Integer gender) {
  this.gender = gender;
  }
  public Date getBirthday() {
  return birthday;
  }
  public void setBirthday(Date birthday) {
  this.birthday = birthday;
  }
  public String getPhone() {
  return phone;
  }
  public void setPhone(String phone) {
  this.phone = phone;
  }
  public String getAddress() {
  return address;
  }
  public void setAddress(String address) {
  this.address = address;
  }
  public Integer getUserRole() {
  return userRole;
  }
  public void setUserRole(Integer userRole) {
  this.userRole = userRole;
  }
  public Integer getCreatedBy() {
  return createdBy;
  }
  public void setCreatedBy(Integer createdBy) {
  this.createdBy = createdBy;
  }
  public Date getCreationDate() {
  return creationDate;
  }
  public void setCreationDate(Date creationDate) {
  this.creationDate = creationDate;
  }
  public Integer getModifyBy() {
  return modifyBy;
  }
  public void setModifyBy(Integer modifyBy) {
  this.modifyBy = modifyBy;
  }
  public Date getModifyDate() {
  return modifyDate;
  }
  public void setModifyDate(Date modifyDate) {
  this.modifyDate = modifyDate;
  }
}


2、添加Mybatis的配置文件mybatis-config.xml


mybatis-config.xml 系统核心配置文件


image.png


<?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="database.properties">
    </properties>
    <!--<settings>-->
    <!--<setting name="logImpl" value="LOG4J"/>-->
    <!--</settings>-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据库连接的配置信息 驱动,URL,用户名,密码-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 将mapper映射文件加入到系统核心配置文件中 -->
    <mappers>
        <mapper resource="cn/kgc/dao/user/UserMapper.xml"/>
    </mappers>
</configuration>


3、定义操作表的sql映射文件UserMapper.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="cn.kgc.dao.user.UserMapper">
    <select id="cnt" resultType="int">
        select count(1) from smbms_user
    </select>
    <select id="user" resultType="cn.kgc.entity.User">
        select * from smbms_user
    </select>
</mapper>


4、编写测试代码:执行定义的select语句


package cn.kgc.dao.user;
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 org.junit.*;
import java.io.IOException;
import java.io.InputStream;
public class UserMapperTest {
    @Test
    public void test(){
        //测试方法
        SqlSessionFactory factory=null;
        SqlSession session=null;
        int count=0;
    /**
     * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源的运行环境信息
     * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 
     * 3、将sql映射文件注册在全局配置文件中
     * 4、写代码:
     *      1)、根据全局配置文件得到SqlSessionFactory;
     *      2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
     *          一个sqlSession就是代表和数据库的一次会话,用完关闭
     *      3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
     * 
     * @throws IOException
     */
        try {
            //1.读取mybatis配置,转成io流
            InputStream is= Resources.getResourceAsStream("mybatis-config.xml");
            //2.利用io流对factory对象赋值
            factory= new SqlSessionFactoryBuilder().build(is);
            //3.由工厂创建SqlSession对象
            session=factory.openSession();
            //由session对象进行语句查询
            count=session.selectOne("cn.kgc.dao.user.UserMapper.cnt");
            System.out.println(count);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


  • 核心接口和类的结构


image.png


  • SqlSessionFactoryBuilder


用过即丢,其生命周期只存在于方法体内


可重用其来创建多个 SqlSessionFactory 实例


负责构建SqlSessionFactory,并提供多个build方法的重载


读取XML文件构造方式:
String resource = "mybatis-config.xml";   
InputStream is = Resources.getResourceAsStream(resource);   
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);


  • SqlSessionFactory


SqlSessionFactory是每个MyBatis应用的核心


作用:创建SqlSession实例


作用域:Application


生命周期与应用的生命周期相同


SqlSession session = sqlSessionFactory.openSession(boolean autoCommit);


  • SqlSession


包含了执行SQL所需的所有方法


对应一次数据库会话,会话结束必须关闭


线程级别,不能共享

image.png


  • SqlSession的两种使用方式
  • 通过SqlSession实例直接运行映射的SQL语句
  • 基于Mapper接口方式操作数据


5、运行结果,成功查询出user的数据



3、持久化与ORM


  • 持久化是程序数据在瞬时状态和持久状态间转换的过程
  • ORM(Object Relational Mapping)


  • 编写程序的时候,以面向对象的方式处理数据
  • 保存数据的时候,却以关系型数据库的方式存储


  • ORM解决方案包含下面四个部分
  • 在持久化对象上执行基本的增、删、改、查操作
  • 对持久化对象提供一种查询语言或者API
  • 对象关系映射工具
  • 提供与事务对象交互、执行检查、延迟加载以及其他优化功能


4、MyBatis的开发步骤小结


  • 下载mybatis-3.2.2.jar包并导入工程
  • 编写MyBatis核心配置文件(configuration.xml)
  • 创建实体类-entity
  • DAO层-SQL映射文件(mapper.xml)
  • 创建测试类


  • 读取核心配置文件mybatis-config.xml
  • 创建SqlSessionFactory对象,读取配置文件
  • 创建SqlSession对象
  • 调用mapper文件进行数据操作
目录
相关文章
|
6月前
|
SQL Java 数据库连接
MyBatis 框架入门理论与实践
MyBatis 框架入门理论与实践
72 6
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
269 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
5月前
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
67 6
|
5月前
|
Java 关系型数据库 数据库连接
MyBatis入门(1)
MyBatis入门(1)
68 2
|
1月前
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
38 0
Mybatis入门(select标签)
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
6月前
|
Java 数据库连接 测试技术
MyBatis-Plus入门
MyBatis-Plus入门
|
3月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
158 0
|
5月前
|
Java 关系型数据库 数据库连接
技术好文共享:第一讲mybatis入门知识
技术好文共享:第一讲mybatis入门知识
34 6
|
5月前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
48 4