MyBatis详解

Mybatis简介

  1. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  2. MyBatis 避免了几乎所有的 JDBC 代码手动设置参数以及获取结果集
  3. MyBatis可以使用简单的XML注解用于配置和原始映射,将接口和Java的POJO(Plain Old JavaObjects,普通的Java对象)映射成数据库中的记录
  4. 其是一个半自动ORM(Object Relation Mapping对象关系映射)框架Hibernant是全自动的

搭建自己的MyBatis

  1. 创建一个Java Web项目
    在这里插入图片描述

  2. 导入依赖

    导入jdbc,mybatis包,Junit包

	<dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.3</version>
    </dependency>
        <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>11.2.0.1.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  1. Java 代码块
    在项目的main目录下创建Java代码包,创建一个pojo包,再创建一个实体类,写入与数据库字段相对应的属性,且属性名应当与数据库查询出的字段名一致
package pojo;

public class User {
   private String username;
   private String password;
   private String telephone;
   private String nickname;
   private String accountid;

    public User(String username, String password, String telephone, String nickname, String accountid) {
        this.username = username;
        this.password = password;
        this.telephone = telephone;
        this.nickname = nickname;
        this.accountid = accountid;
    }

    public String getAccountid() {
        return accountid;
    }

    public void setAccountid(String accountid) {
        this.accountid = accountid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", telephone='" + telephone + '\'' +
                ", nickname='" + nickname + '\'' +
                ", accountid='" + accountid + '\'' +
                '}';
    }
}

创建在Java代码包下创建Dao目录
创建一个接口UserDao
接口内写入对应方法 运行时会进行反射

package Dao;

import pojo.User;

import java.util.List;

public interface UserDao {
    //查询全部
    List<User> findAll();
}

  1. MyBatis 代码块
    在main目录下创建resourcecs文件夹
    在当前目录下创建db.propertise文件
    内部写入自己的数据库驱动与链接地址,还有数据库对应的用户与密码
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@//localhost:1521/XXX
username=XXX
password=XXX
在文件夹内创建**mybatis-config.xml 文件**
	对mybatis进行配置
<?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 文件 动态插入数据库连接所需数据-->
    <properties resource="db.properties"/>
    <!--配置mybatis环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${dirver}" />
                <property value="${url}" name="url" />
                <property value="${username}" name="username" />
                <property value="${password}" name="password" />
            </dataSource>
        </environment>
    </environments>
    <!-- 引入SQL映射文件,Mapper映射文件 	-->
    <mappers>
        <mapper resource="mapper.xml" />
    </mappers>
</configuration>

接下来写sql映射文件
在resources目录下创建mapper.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">
<!--namespace与Dao目录下的接口相对应-->
<mapper namespace="Dao.UserDao">
    <select id="findAll" resultType="pojo.User">
    	<!--sql 写入sql查询语句-->
        SELECT username,password,telephone,nickname,accountid FROM bloglogin
    </select>
</mapper>

6.在main目录下创建test文件夹 将其标记为 test resources 即可在当前包内创建测试类

	SqlSession session = null;
	@Before
	//封装代码块,用于创建session会话
    public void test0(){
        String path = "mybatis-config.xml";
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader(path);
            System.out.println(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
        //创建session实例
        session = sqlMapper.openSession();
    }
    @Test
    public void test(){
        //查询  利用接口进行反射
       	UserDao user = session.getMapper(UserDao.class);
       	//调用接口内方法
        List<User> all = user.findAll();
        System.out.println(all.size());
        //关闭会话
        session.close();
    }

测试运行 即可查询出结果

MyBatis配置文件简介

  1. MyBatis 的配置文件会直接影响MyBatis的运行行为,同时内部还提供了属性信息的设置
  2. 文件的结构为

configuration 配置

settings 设置
typeAliases 类型命名
typeHandler 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境

   environment 环境变量
  		transactionManager  事务管理器
  		DataSource 数据源

databaseProvider 数据库厂商标识
mappers 映射器

properties属性

  1. 可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来配置
  2. 然而properties的作用并不单单是这样,你可以创建一个资源文件,名为jdbc.properties的文件,将四个连接字符串的数据在资源文件中**通过键值 对(key=value)**的方式放置,不要任何符号,一条占一行
    代码示例:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_1129
jdbc.username=root
jdbc.password=1234
### MyBatis 详解使用教程与原理介绍 #### 工作原理概述 MyBatis 是一种持久层框架,它支持定制化 SQL 查询、存储过程以及高级映射。其工作流程可以分为以下几个方面: - 配置文件解析阶段:MyBatis 加载 `mybatis-config.xml` 文件并初始化全局配置信息[^3]。 - 动态 SQL 解析阶段:SQL 映射语句被加载到内存中,并根据参数动态生成最终执行的 SQL 语句。 - 数据库交互阶段:通过 JDBC 进行数据库操作,返回查询结果。 #### 开发环境搭建 要开始使用 MyBatis,需完成以下准备工作: - 导入 MyBatis 的核心 JAR 包作为项目的依赖项。如果采用 Maven 构建工具,则可以通过 POM 文件引入所需依赖[^2]。 ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.x.x</version> </dependency> ``` #### 全局配置文件说明 (`mybatis-config.xml`) 此文件定义了 MyBatis 的运行环境及相关设置,主要包括数据源配置和事务管理器等内容。以下是典型的 XML 结构示例: ```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> <!-- 环境配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <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> <!-- Mapper 扫描路径 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` #### SQL 映射文件设计 SQL 映射文件描述了如何将 Java 对象映射至数据库表中的记录。下面是一个简单的例子展示增删改查的操作方式: ```xml <mapper namespace="com.example.mapper.UserMapper"> <!-- 插入新用户 --> <insert id="addUser" parameterType="com.example.model.User"> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert> <!-- 删除指定ID的用户 --> <delete id="removeUserById" parameterType="int"> DELETE FROM users WHERE id=#{id} </delete> <!-- 更新现有用户的属性 --> <update id="modifyUserInfo" parameterType="com.example.model.User"> UPDATE users SET name=#{name}, age=#{age} WHERE id=#{id} </update> <!-- 查找特定条件下的所有匹配条目 --> <select id="findUsersByAgeRange" resultType="com.example.model.User"> SELECT * FROM users WHERE age BETWEEN #{minAge} AND #{maxAge} </select> </mapper> ``` #### 编程接口调用方法 在实际编码过程中,通常会借助 MyBatis 提供的 SqlSession 来实现业务逻辑处理。例如: ```java import org.apache.ibatis.session.SqlSession; import com.example.mapper.UserMapper; public class UserService { private final UserMapper userMapper; public UserService(SqlSession sqlSession){ this.userMapper = sqlSession.getMapper(UserMapper.class); } public void addUser(String name,int age){ userMapper.addUser(name,age); // 调用对应的 insert 方法 } public List<User> findUsersInRange(int minAge,int maxAge){ return userMapper.findUsersByAgeRange(minAge,maxAge); // 返回符合条件的结果集 } } ``` #### 官方资源获取途径 对于希望深入研究该技术栈的学习者而言,可以从官方 GitHub 库下载最新版本及其文档资料[^4]: - 地址链接: https://github.com/mybatis/mybatis-3 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值