当前位置: 首页 > news >正文

【2023.11.24】Mybatis基本连接语法学习➹

基本配置

1.如果使用Maven管理项目,需要在pom.xml中配置依赖。

2.安装Mybatis-3.5.7.jar包

3.进行XML配置:这里将文件命名为mybatis-config.xml

配置数据库连接XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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="${驱动类(含包名)}"/><property name="url" value="${数据库连接URL}"/><property name="username" value="${用户名}"/><property name="password" value="${密码}"/></dataSource></environment></environments><mappers><mapper url = "file:src/com/test/mapper/TestMapper.xml"/><!--    存放映射器XML文件   --></mappers></configuration>

其中mappers标签内存放XML映射器文件

编写Java主函数

package com.test;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args) throws FileNotFoundException {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("src/mybatis-config.xml"));try (SqlSession sqlSession = sqlSessionFactory.openSession(true)){System.out.println(sqlSession.selectList("getArtist"));//括号内填写SQL映射语句的id}}
}

1.从 XML 中构建 SqlSessionFactory

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得,创建SqlSessionFactory时会调用xml配置文件。

2.从 SqlSessionFactory 中获取 SqlSession

我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。

你可以通过 SqlSession 实例来执行已映射的 SQL 语句。SQL语句的映射需要编写映射器XML文件

编写映射器(mapper)的XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="src/com/test/mapper/TestMapper.xml"><!--区分不同映射器--><!--条件查询--><select id="getArtist" resultType="String">select aName from artist<!--填写SQL语句,里面的变量都是数据库的表名和字段名--></select>
</mapper>

注:若xml配置文件中出现找不到映射器文件的情况,注意配置文件中mapper标签内的映射器引用格式。


接口函数

编写映射器接口:

package com.test.mapper;import com.test.artist;import java.util.List;public interface TestMapperInterface {List<artist> selectArtist();artist getArtistById(int a);int addArtist(artist newArtist);int deleteArtist(int d);
}

要让映射器关联上映射器接口,只需要修改映射器的namespace为接口地址:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.TestMapperInterface"><resultMap id="test" type="com.test.artist"><result column="aID" property="aID"/></resultMap><select id="selectArtist" resultMap="test">select * from artist</select><!--条件查询--><select id="getArtistById" resultMap="test">select * from artist where aID = #{a}<!--接口形参名--></select><!--插入操作--><insert id="addArtist">insert into artist(aID,aName,asex) values (#{aID},#{aName},#{asex})</insert><!--删除操作--><delete id="deleteArtist" parameterType="com.test.artist">delete from artist where aID = #{d}</delete></mapper>

接口中的方法会自动对应上映射器中的SQL执行语句id

修改配置文件中的mapper路径:

<mapper resource = "com/test/mapper/TestMapper.xml"/>
因为接口的命名空间通常是在类路径下的某个位置,所以这里要将URL改成 resource

主函数调用映射器接口:

package com.test;import com.test.mapper.TestMapperInterface;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Main {public static void main(String[] args) throws FileNotFoundException {SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("src/mybatis-config.xml"));try (SqlSession sqlSession = sqlSessionFactory.openSession(true)){TestMapperInterface mapper = sqlSession.getMapper(TestMapperInterface.class);mapper.selectArtist().forEach(System.out::println);System.out.println("\n");System.out.println(mapper.getArtistById(2089));}}
}

MyBatis与JDBC的差异

JDBC和Mybatis优缺点对比
JDBCMybatis
DriverManager驱动类连接数据库,java代码与数据库耦合

配置xml文件中连接数据库,使得java代码与数据库分离

Statement对象中执行SQL语句,java代码与SQL语句耦合映射器的xml文件中执行SQL语句,使得java代码与SQL语句分离
ResultSet对象中接收SQL语句结果,每条结果需要指针遍历。直接通过SqlSession中的方法接收SQL语句结果,结果是一个集合

综上,相比于JDBC所有功能都在java代码中执行,Mybatis尽管结构更加复杂,但每个文件负责不同的功能,更加便于管理。

http://www.lryc.cn/news/242821.html

相关文章:

  • 如何防止网络被入侵?
  • 【Linux】常见指令及周边知识(一)
  • 【Docker】从零开始:6.配置镜像加速器
  • The Bridge:从临床数据到临床应用(预测模型总结)
  • [极客大挑战 2019]Secret File1
  • 如何评估一个论坛或峰会值不值得参加?
  • 04_使用API_日期和时间
  • 手动实现 git 的 git diff 功能
  • RabbitMQ之MQ的可靠性
  • Navicat 技术指引 | 适用于 GaussDB 的查询编辑器
  • Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
  • (2023码蹄杯)省赛(初赛)第三场真题(原题)(题解+AC代码)
  • 第十二章 : Spring Boot 日志框架详解
  • STM32 -Bin/Hex文件格式解析
  • 【Java 进阶篇】Redis:打开缓存之门
  • Python与设计模式--享元模式
  • 亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(二)
  • 怎么当代课老师教学生
  • 『 MySQL数据库 』表的增删查改(CRUD)之表的数据插入及基本查询
  • Vue中mvvm的作用
  • 基于springboot实现高校食堂移动预约点餐系统【项目源码】
  • 用element ui上传带参数的文件,并用flask接收
  • [Android]使用Git将项目提交到GitHub
  • python cv2.imread()和Image.open()的区别和联系
  • hdlbits系列verilog解答(exams/m2014_q4i)-45
  • flink源码分析之功能组件(二)-kubeclient
  • 无需API开发,有赞小程序集成广告推广系统,提升品牌曝光
  • CMD - ping
  • 数据结构与算法编程题23
  • 小程序中的大道理之二--抽象与封装