• Mybatis


    1.什么是ORM?

            ORM对象关系映射(Object-Relationl Mapping),它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作 对象一样操作它就可以了 。

    -------------------------------------------------------------------

    创建 maven 项目:

    1.在 pom.xml 中引入 jar 包。

    1. <dependency>
    2. <groupId>org.mybatisgroupId>
    3. <artifactId>mybatisartifactId>
    4. <version>3.2.8version>
    5. dependency>
    6. <dependency>
    7. <groupId>mysqlgroupId>
    8. <artifactId>mysql-connector-javaartifactId>
    9. <version>5.1.44version>
    10. dependency>

    2.创建 mybatis-config.xml主配置文件

    3.将 database.properties 文件放入 resources 下

    4.在 mybatis-config.xml 读取 database.properties

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

    5.创建com.hz.pojo并复制Provider.java

    6.创建DAO接口

    7.在resources下创建mappers文件夹,并创建ProviderMapper.xml

    8.编写mapper文件  实现findProviderById(Integer id);方法

    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="com.hz.dao.ProviderDao">
    6. <select id="findProviderById" parameterType="Long" resultType="com.hz.pojo.Provider">
    7. select * from smbms_provider where id = ${id}
    8. select>
    9. mapper>

    9.在主配置文件中读取mapper文件

    1. <mappers>
    2. <mapper resource="mappers/ProviderMapper.xml" />
    3. mappers>

    10.创建测试类  并编写代码

    1. try {
    2. //读取主配置文件 返回流
    3. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    4. //创建SqlSession工厂类
    5. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    6. //创建sqlSession
    7. /**
    8. * true 自动提交事务 (默认)
    9. * false 关闭自动提交
    10. */
    11. SqlSession sqlSession = sqlSessionFactory.openSession(true);
    12. //获得ProviderDao实例
    13. ProviderDao providerDao = sqlSession.getMapper(ProviderDao.class);
    14. Provider provider = providerDao.findProviderById(2L);
    15. System.out.println(provider.toString());
    16. sqlSession.close();
    17. is.close();
    18. } catch (Exception e) {
    19. e.printStackTrace();
    20. }
    21. }

    ---------------------------------------------------------------------------------

    mapper.xml的SQL语句中的占位符${}和#{}

    1. #{ }:会将其替换为?,为了防止SQL注入
    2. ${ }:拼sql,会存在SQL注入问题
    3. 使用时机:
      1. 参数传递的时候用:#{ }
      2. 表名或者列名不固定的情况下:${ }

            

             一般会采用#{},#{}在mybatis中,最后会被解析为?,其实就是Jdbc的PreparedStatement中的?占位符,它有预编译的过程,会对输入参数进行类型解析(如果入参是String类型,设置参数时会自动加上引号),可以防止SQL注入,如果parameterType属性指定的入参类型是简单类型的话(简单类型指的是8种java原始类型再加一个String),#{}中的变量名可以任意,如果入参类型是pojo,比如是Student类

    1. public class Student{
    2. private String name;
    3. private Integer age;
    4. //setter/getter
    5. }

    那么#{name}表示取入参对象Student中的name属性,#{age}表示取age属性,这个过程是通过反射来做的,这不同于${},${}取对象的属性使用的是OGNL(Object Graph Navigation Language)表达式


    原文链接:mybatis看这一篇就够了,简单全面一发入魂_抠脚的大灰狼的博客-CSDN博客

  • 相关阅读:
    iOS逆向工程之Theos
    springcloudalibaba架构(18):链路追踪Sleuth+ZipKin
    Vue中...(扩展运算符)的作用
    三角函数概述
    (五)Gluster 管理员(小节-1)
    Hadoop3教程(三十四):(生产调优篇)MapReduce生产经验汇总
    PB语言实现反射机制
    【算法leetcode】222. 完全二叉树的节点个数(rust和go)
    C#知识|基于实体类对象,返回实体集合封装介绍。
    二、【MyBatis】 MyBatis入门与简单使用
  • 原文地址:https://blog.csdn.net/qq_44114187/article/details/132741335