• Mybatis学习


    为什么会有mybatis?:

    图片来自b站的黑马网课 截图  懒得自己打字了hh  帅气的人都要注明出处

    相信在学习框架之前 都学习了JDBC

     因为Mybatis可以解决旧的JDBC存在的一些问题

    什么是mybatis?: 

     ORM框架原理:

    Mybatis是一个ORM框架,即object relation mapping,对象关系映射架构,让Java的对象与数据库的对象一一对应。能自动保存对象到数据表。

     
     搭建Mybatis的环境:

    1. 创建工程
    2. 引入依赖
    3. 准备数据库
    4. 编写数据库连接信息配置文件
    5. 编写核心数据库配置以及映射

     创建工程:

    idea创建一个maven项目 

    添加依赖:

    在pom.xml 中加入下面的依赖项:

    2023年应该都是最新版本的。

    1. <dependencies>
    2. <dependency>
    3. <groupId>mysql</groupId>
    4. <artifactId>mysql-connector-java</artifactId>
    5. <version>8.0.33</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>org.mybatis</groupId>
    9. <artifactId>mybatis</artifactId>
    10. <version>3.5.13</version>
    11. </dependency>
    12. <dependency>
    13. <groupId>org.projectlombok</groupId>
    14. <artifactId>lombok</artifactId>
    15. <version>1.18.26</version>
    16. <scope>provided</scope>
    17. </dependency>
    18. <dependency>
    19. <groupId>junit</groupId>
    20. <artifactId>junit</artifactId>
    21. <version>4.13.2</version>
    22. <scope>test</scope>
    23. </dependency>
    24. </dependencies>

     创建数据库:

    create  database  mybatis;

    创建连接配置:

    创建

    db.properties连接配置

    1. mysql.driver=com.mysql.cj.jdbc.Driver
    2. mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimeZone=utc&CharacterEncoding=utf8
    3. mysql.username=root
    4. mysql.password=Zxd123456789.

    创建核心配置

    导入写好的 连接配置

    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <properties resource="properties/db.properties">properties>
    7. <environments default="development">
    8. <environment id="development">
    9. <transactionManager type="JDBC"/>
    10. <dataSource type="POOLED">
    11. <property name="driver" value="${db.driver}"/>
    12. <property name="url" value="${db.url}"/>
    13. <property name="username" value="${db.user}"/>
    14. <property name="password" value="${db.password}"/>
    15. dataSource>
    16. environment>
    17. environments>
    18. <mappers>
    19. <mapper resource="StudentMapper.xml"/>
    20. mappers>
    21. configuration>

    到这里环境就搭建完毕了 

    搭建完毕之后   我们就来  用一下mybatis   

    mybatis入门程序:

    准备数据库:

    上面的例子中我们已经创建好了数据库 现在我们新建一张表  

    1. create table user
    2. (
    3. id int null,
    4. name varchar(10) null,
    5. age int null,
    6. constraint table_name_pk
    7. primary key (id)
    8. );
    9. create unique index table_name_id_uindex
    10. on table_name (id);

    插入数据:

    insert  into user (id, name, age) values ('0','老李',12)

    建立一个包mypojo 在包里新建一个pojo类

    让他和数据库的字段一一对应

    pojo.java

    1. package mypojo;
    2. public class pojo {
    3. private String name;
    4. private int age;
    5. public String getName() {
    6. return name;
    7. }
    8. public void setName(String name) {
    9. this.name = name;
    10. }
    11. public int getAge() {
    12. return age;
    13. }
    14. public void setAge(int age) {
    15. this.age = age;
    16. }
    17. }

    新建usermapping.xml 在资源resourse下面

    这里用来查询 

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="mypojo.pojo">
    6. <select id="find" resultType="mypojo.pojo">
    7. //设置唯一的id 与数据类型
    8. select * from user where id =#{id}
    9. select>
    10. mapper>

    加载sql文件

    在核心配置文件mybatis-config.xml里 映射  我们的查询

    1. <mappers>
    2. <mapper resource="usermapping.xml"/>
    3. mappers>
    1. "1.0" encoding="UTF-8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <properties resource="db.properties">
    7. properties>
    8. <environments default="development">
    9. <environment id="development">
    10. <transactionManager type="JDBC"/>
    11. <dataSource type="POOLED">
    12. <property name="driver" value="${mysql.driver}"/>
    13. <property name="url" value="${mysql.url}"/>
    14. <property name="username" value="${mysql.username}"/>
    15. <property name="password" value="${mysql.password}"/>
    16. dataSource>
    17. environment>
    18. environments>
    19. <mappers>
    20. <mapper resource="usermapping.xml"/>
    21. mappers>
    22. configuration>

     测试类:

    新建个测试类 

    test.java

    1. import mypojo.pojo;
    2. import org.apache.ibatis.io.Resources;
    3. import org.apache.ibatis.session.SqlSession;
    4. import org.apache.ibatis.session.SqlSessionFactory;
    5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    6. import java.io.IOException;
    7. import java.io.InputStream;
    8. public class test {
    9. public static void main(String[] args) throws IOException {
    10. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    11. //获取核心配置
    12. SqlSessionFactory sqlf = new SqlSessionFactoryBuilder().build(is);
    13. //开启sql
    14. SqlSession sqs = sqlf.openSession();
    15. pojo p= sqs.selectOne("mypojo.pojo.find",1);
    16. //加载sql
    17. System.out.println(p.getName()+p.getAge());
    18. //获取到数据库信息
    19. sqs.close();
    20. //释放资源
    21. //从这里也可以看出 mybatis对于jdbc的补充
    22. }
    23. }

    运行结果:

    成功获取了信息

     

    亲手做了上面的练习  能很好的看出mybatis的工作原理。

    mybatis工作原理:

     图是b站黑马的  注明出处  不过这不影响帅气的人自学

     由核心配置文件加载映射文件 也就是上面将数据库与Java对象对应起来的文件

    然后构造会话工厂   创建会话对象  创建执行器 由 mybatis为我们自动封装映射数据库中的类型到Java对象上

     


    Mybaties配置文件

    mybatis-config.xml

    下面这个配置文件的顺序是固定的不能随意更改  全部给了注释  

    1. "1.0" encoding="UTF8" ?>
    2. configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <properties resource="db.properties">
    7. properties>
    8. <settings>
    9. <setting>//这里配置一些设置setting>
    10. settings>
    11. <typeAliases>
    12. <package name=""/>
    13. typeAliases>
    14. <environments default="development">
    15. <environment id="development">
    16. <transactionManager type="JDBC"/>
    17. <dataSource type="POOLED">
    18. <property name="driver" value="${mysql.driver}"/>
    19. <property name="url" value="${mysql.url}"/>
    20. <property name="username" value="${mysql.username}"/>
    21. <property name="password" value="${mysql.password}"/>
    22. dataSource>
    23. environment>
    24. environments>
    25. <mappers>
    26. <mapper resource="usermapping.xml"/>
    27. mappers>
    28. configuration>


    mybatis动态sql

    在之前拼接sql使用的是   程序员去手动的拼接   

    举个例子:select  xx from  table  where   xxx  and xxx 

    非常繁琐 且不方便 而且存在问题  如果条件不成立  关键字就会多余出来

    mybatis提供了动态sql拼接

    有以下几组标签 来拼接sql

    以if和where为例子 

     

    这里的select语句   如果按照之前的静态的写法  将会很麻烦  这里我们用where和if 组合起来

    进行了条件判断  其他几个标签也可以自行去尝试 语法差不多  有Java基础是可以很快理解的

    下面主要将一下 trim标签

    tirm

    可以看到下面的代码   tirm标签可以代替where  可以添加前缀where 以及自动的去除where后面的and 【根据and和where后面的条件是否成立来决定是否剔除关键字】

    update:

    用法也是比较简单

    在更新语法后

    这里写条件即可

    提供了set标签   当set与if连用  要确保set标签内部不为空 否则会有问题


    mybatis查询

    数据库关系映射:

    1:1        一对一          一个人 一张身份证

    1:n   一对多   一个人很多个朋友

    m:n   多对多     每个人都会有很多朋友

    一对一查询:

    association标签

  • 相关阅读:
    羧基功能化咪唑基离子液体[CEBIM][PF6]改性普鲁士兰多糖的反应合成
    深度学习论文阅读目标检测篇(七)中文版:YOLOv4《Optimal Speed and Accuracy of Object Detection》
    【ArcGIS微课1000例】0048:制图表达(3)---水立方效果实现
    java计算机毕业设计家庭园艺服务平台源码+数据库+lw文档+系统
    Visual Studio Code 从英文界面切换中文
    vm options、program arguments、environment property
    LeetCode每日一题(2226. Maximum Candies Allocated to K Children)
    static静态成员变量使用@Value注入方式
    Sophus安装
    国内可用免费AI工具集
  • 原文地址:https://blog.csdn.net/m0_68711597/article/details/133471122