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了