首页 > 其他分享 >mybatis

mybatis

时间:2023-06-01 09:00:44浏览次数:32  
标签:Mapper 实体类 映射 别名 SQL mybatis

MyBatis的基本使用
MyBatis类中编写:
//1、加载mybatis的核心配置文件,获取 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

//2、使用 SqlSessionFactory 获取 SqlSession 对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();

//3、执行sql
List<User> user = sqlSession.selectList("test.selectAll");
System.out.println(user);

//4、释放资源
sqlSession.close();

 

Mapper代理开发

优势;

首先它不依赖于字符串字面值,会更安全一点;其次,如果你的 IDE 有代码补全功能,那么代码补全可以帮你快速选择到映射好的 SQL 语句。

 

Mapper代理方式

1、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下

2、设置SQL映射文件的namespace属性为Mapper接口全限定名

3、在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致

4、编码

  1、通过SqlSession的getMapper方法获取Mapper接口的代理对象

  2、调用对应方法完成sql的执行

 

注:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载

 

MyBatis核心文件配置:

mybatis-config.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>
<!--
注意:顺序不能弄错 顺序查看 https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases

类型别名(typeAliases) 可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写 。在此加上之后,mybatis会扫描这个包下的实体类,并起别名
每一个在包 com.song.pojo 中的实体类,在没有注解的情况下,会使用实体类的首字母小写的非限定类名来作为它的别名。
-->
<typeAliases>
<package name="com.song.pojo"/>
</typeAliases>
<!-- environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///ssm?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="12345678"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加载sql映射文件-->
<mapper resource="com/song/mapper/UserMapper.xml"/>
</mappers>
</configuration>

 

SQL映射文件配置:

如查询User表

UserMapper.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">
<!--namespace:名称空间-->
<mapper namespace="com.song.mapper.UserMapper">
<!--查User全部-->
<select id="selectAll" resultType="user"> <!--别名不区分大小写 若不使用别名,此处则需填写 com.song.pojo.User 否则报错-->
select * from user
</select>

</mapper>


处理数据库中表字段名称与实体类名称不一致的情况,使它自动封装数据

注意:下面代码放在mapper标签中

<!--数据库表的字段名称  和    实体类的属性名称   不一致,不能自动封装数据
  处理方式
    1、起别名:对不一样的列名起别名,让别名和实体类的属性名一样
      缺点:每次查询都要定义一次别名
    2、sql片段
      缺点:不灵活
    3、resultMap:
      定义<result Map>标签
      在<select>标签中,使用resultMap属性替换 resultType属性-->
<!-- id:唯一标识 type:映射的类型,支持别名 -->
<resultMap id="userResultMap" type="com.song.pojo.User">
<!--
id:完成主键字段的映射
column:表的列名
property:实体类的属性名
result:完成一般字段的映射
column:表的列名
property:实体类的属性名
-->
<result column="user_name" property="username"/>
</resultMap>

 

标签:Mapper,实体类,映射,别名,SQL,mybatis
From: https://www.cnblogs.com/xpl915/p/17447930.html

相关文章

  • 解决mybatis-plus查询字段中含有关键词时异常问题
    在使用mybatis-plus查询mysql某张表的数据时,一直告警提示sqlsyntaxerror。于是,把异常提示里的sql语句复制到navicat执行,也提示sqlsyntaxerror。仔细看了下,发有几个字段在navigate里面标示为蓝色(这几个字段为sensitive、status、name),这几个字段在mysql里面是关键词。在查询语......
  • MyBatis+Sharding-JDBC实体类LocalDateTime类型字段查询报SQLFeatureNotSupportedExce
    问题最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,本公共模块对新需求的功能点进行抽象,减少重复代码,提高模块复用性和可维护性。目前有2个渠道项目接入了该公共模块,自测时发现其中1个运......
  • Mybatis Plus
    MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率1.MyBatisPlus简介入门案例MyBatisPlus概述2.标准数据层开发标准数据层CRUD功能分页功能3.DQL控制条件查询方式查询投影查询条件设定字段映射与表名映射4.DML控制id自增......
  • Mybatis-plus关于代码生成器的使用
    1、添加依赖 2、在test包下创建一个CodeGet类,实现生成代码的功能。注意:全局配置、数据源配置一定要和自己的电脑配置一致! 3、执行CodeGet类中的main方法。打印台有如下图提示字样,即自动生成成功。 4、对比两张图。在wechat文件夹下有controller、entity、mapper、s......
  • Mybatis使用实例
    当涉及到演示如何使用MyBatis时,以下是一个简单的示例代码。这个示例代码将展示如何配置MyBatis,如何定义映射文件以及如何执行数据库操作。首先,你需要准备以下环境:JavaDevelopmentKit(JDK)MyBatis框架的JAR文件数据库连接驱动的JAR文件(根据你使用的数据库类型)接下来,按照......
  • 使用mybatis完成CRUD
    1. 什么是CRUD    17C: Create 增R: Retrieve 查(检索)U: Update 改D: Delete 删2. insert   17<insertid="insertCar">insertintot_car(id,car_num,brand,guide_price,produce_time,car_type)values(null,'1003','丰田霸道',30.0,'2000......
  • 最全面的Mybatis面试八股文
    Mybatis是什么?MyBatis框架是一个开源的数据持久层框架。它的内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配......
  • mybatis配置多数据源
    yml中配置mybatis的日志输出信息mybatis:#springboot集成mybatis的方式打印sqlconfiguration:log-impl:org.apache.ibatis.logging.stdout.StdOutImplmaven引入相关的配置<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>my......
  • 开发手记:MyBatis的mapper文件的中SQL符号转义
    字符转义问题在MaBatis的XML文件中编写SQL语句时,<符号会出现转义问题,例如:<!--查询指定月份内的订单--><selectid="queryInRange"resultType="OrderEntity"> SELECT*FROMorder WHEREcreate_time>DATE_SUB(NOW(),INTERVAL#{month}MONTH) ANDuser_i......
  • Mybatis-plus 简单使用
    Mybatis-plus特点介绍:1、无侵入:只做增强不做改变,引入它不会对现有工程产生影响2、强大的CRUD操作:内置通用Mapper、Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求。3、支持Lambda形式调用:通过Lambda表达式,方便编......