Java (MyBatis)

前沿

MyBatis 是一个开源的持久层框架,它简化了数据库访问的过程,通过将 SQL 语句和 Java 方法进行映射

1.SQL 和 Java 方法的映射:
MyBatis 使用 XML 或注解来配置 SQL 语句,并将 SQL 语句映射到 Java 接口或方法上,使得开发者可以直接调用 Java 方法来执行数据库操作。
2.SQL 语句的灵活性: 在 MyBatis 中,可以编写原生 SQL 语句,也可以使用动态 SQL 来实现动态条件拼接,灵活地构建复杂的查询语句。
3.参数传递和结果映射: MyBatis 支持各种参数传递方式,包括基本类型、对象、Map 等,并且可以将查询结果映射到 Java 对象中,方便进行后续的业务处理。
4.事务管理: MyBatis 支持对数据库事务的管理,可以配置事务的隔离级别、提交方式等,确保数据的一致性和完整性。

 

MyBatis 也是ORM(Object/RelationMapping),中文名称:对象/关系 映射。是一种解决数据库
发展和面向对象编程语言发展不匹配问题而出现的技术
 

如何创建一个

1.创建数据库表
2.创建Maven项目
3.添加依赖
4.创建MyBatis全局配置文件
5.创建实体类
6.创建映射文件
7.编写测试类,启动项目

方法

注入依赖

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.16</version>
</dependency>

然后在resources 新建 Mybatis.xml  这个是标配的核心文件

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="mysql">
    <environment id="mysql">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="${url}"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">

这个就是规定这么写,然后下面就是连接数据库

 

 <environments default="mysql">
    <environment id="mysql">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="${url}"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>

然后再创建实体类

package com.example.pojo;

public class Book {
    private int id;
    private String name;
    private String author;
    private double price;

    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 getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    // 创建没有类型的构造器
    public Book() {
    }

    public Book(int id, String name, String author, double price) {}
}

创建映射文件

也还是要创建xml 文件

简单的说就是和数据库连接  不需要我们写数据库,一些数据库的操作

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

 

 射器 XML 文件中定义任意数量的映射语句,这样您就可以从 XML 标头和文档类型声明中获得很多好处。文件的其余部分非常不言自明。

它在命名空间“org.mybatis.example.BlogMapper”中定义了映射语句“selectBlog”的名称, 

 

然后再核心的代入  Mybatis.xml   把上面的给引入进去map 这个就是和net 的 ioc 容器差不多需要 导入到 server 接口 注册在promse.cs 注册多多个入口文件

  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>

 

或者实现接口

packagecom.msb.mapper;
importjava.util.List;

public interface BookMapper {
/*public abstract*/ List selectAllBooks();
}

 

然后映射XML  到把抽象类的interface. 创建方法把接口实现

就是上面的 实现类  xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

 

解释: 按我的理解 我可真是个大聪明

<mapper namespace="org.mybatis.example.BlogMapper">
这个就是绝对路径下的 接口的 目录 然后 resultType 就是

就是和. net 的 server 一样
publec class FlowerService: IFlowerService 一样就是
IFlowerService 这个就是类型 <mapper namespace="org.mybatis.example.BlogMapper"> 把这个抽象类具体实现了
  <select id="selectBlog" resultType="Blog">
selectBlogs 就是把接口的方法重写了, 既然重写 必须和接口类的一样

 

最后编写。 测试类 Test 类


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IoException;
import java.io.Inputstreampublic;

publie class Test {
public static void main(String[] args) throws IoException {
//指定核心配置文件的路径
Stringresource="mybatis.xml";

//获取加载配置文件的输入流:
Inputstreaminputstream=Resources.getResourceAsStream(resource);
//加载配置文件,创建工厂类
SqlSessionFactory sqlSessionFactory=newSqlSessionFactoryBuilder().build(inputstream);
         //通过工厂类获取一个会话:
         SqlSessionsqlSession=sqlSessionFactory.openSession();
         //执行查询:
         List list = sqlSession.selectList(s:"a.b.EelectAllBooks");
       //遍历:
for(int i=0;i<=list.size()-1;i++){
Book b =(Book)list.get(i);
System.out.println(b.getName() + "---" + b.getAuthor());
}
//关闭资源:
sqlsession.close();
    }
}

ok 这样就OK了

 

 

posted @ 2024-06-05 15:24  -鹿-  阅读(2)  评论(0编辑  收藏  举报