栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis的使用

目录

一.Sring项目中关于MyBatis的配置

1.在pom.xml中引入框架依赖

2.配置文件配置相关信息

 3.设置mapper中的xml文件内容

4.根据以上配置实现的查询示例

(1)添加实体类

(2)添加mapper接口

(3)添加UserMapper.xml

(4)server层的调用

(5)controller层的调用

(6)前端访问后端路径

二.有关mybatis中xml对于数据库操作的具体使用

1.插入操作

2.删除操作

3.修改操作

4.查询操作

 三.Mybatis进阶操作

1.参数占位符

2.like查询

3.多表查询

(1)一对一查询

(2)一对多查询 

4.动态查询(if,trim,where,set,foreach的使用)

(1)if

(2)trim

(3)where

(4)set

(5)foreach


一.Sring项目中关于MyBatis的配置

1.在pom.xml中引入框架依赖

这里手动进行添加,通过在已有的spring项目中的pom.xml文件中引入以下依赖



org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.4



mysql
mysql-connector-java
runtime

2.配置文件配置相关信息

在application.properties中配置以下内容

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
#配置mybatis的xml文件路径
mybatis.mapper-locations=classpath:mapper/**Mapper.xml

这里关于xml文件路径配置的匹配规则是在当前mapper下所有文件名以Mapper.xml结尾的文件。

如下所示:

 3.设置mapper中的xml文件内容

 其中mapper中需要配置的内容有如下:





mapper里面就是对于CRUD操作的一些语句,只不过这些语句头需要遵守一些约束和规定,之后才能转化为java对象,并作为返回值返回给java中调用的方法。

4.根据以上配置实现的查询示例

查询前的配置:

(1)添加实体类

(2)添加mapper接口

(3)添加UserMapper.xml

将查询到的结果集会自动装配到配置的resultMap中

(4)server层的调用

 mapper里面的指定方法被调用后会通过之前配置的xml和对应的路径会执行xml文件中的方法

(5)controller层的调用

 定义service层,然后在该层调用mapper中的方法

(6)前端访问后端路径

 通过postman来通过url来访问该资源下的路径

 上面就是使用mybatis来对数据库操作的整个流程,接下来就是一些有关xml中关于CRUD语句的具体操作和配置。

二.有关mybatis中xml对于数据库操作的具体使用

1.插入操作

seGeneratedKeys: MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键,默认值:false。
keyColumn:设置生成键值在数据库表中的列名;如果生成列不止一个,可以用逗号分隔多个属性名称。
keyProperty:指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset)。如果生成列不止一个,可以用逗号分隔多个属性名称。

controller层

 service层

 mapper层

通过接口插入成功的显示

 UserMapper.xml中的sql代码:

    
        insert
        into
         user(username, password, nickname)
        values (#{username},#{password},#{nickname})
    

2.删除操作

基于xml文件配置好的前提下,然后在xml文件中写sql操作

 通过构造前端接口,来调用mybatis中的sql来进行验证,执行顺序如下:

3.修改操作

 

 

4.查询操作

对于查询操作来说,需要在xml中配置结果集映射,因为需要将查找中的数据映射为一个java对象。

首先在xml文件中使用resultMap,然后设置id,之后的查询语句需要根据该id来进行转化为type中的对象,其中type中为model类的位置(类路径),然后里面就是关于映射关系的指定,其中id是数据库中关于主键的映射,如果不是主键,就使用result,对于属性中的参数,如column是数据库中的字段名,而property是类的成员变量。



    
        
        
        
        
        
        
    

 三.Mybatis进阶操作

1.参数占位符

#{}是预编译占位符,在处理是,会将该位置的数据先转化为?,然后在执行PreparedStament中的set方法时,将?替换变量值。如果是字符串,会添加""。

${}是直接进行替换为变量的值,存在sql注入问题。

假如传递的数据是sort ,对于#{},最终会处理成"sort",而${}就是sort。

2.like查询

在使用like的时候,一般是模糊查询,在mybatis中需要使用concat函数来将%与#{变量值}来进行拼接。

concat(str1, str2, str3...)是将str1和str2和str3等全部进行拼接起来。


    
        select
        u.id,
        u.username,
        m.id_card m_id_card,
        m.id m_id,
        m.user_id m_user_id
        from user u left join message m on u.id=m.user_id;
    

 查询和配置关系

 

(2)一对多查询 

对于一个用户表和文章表的关系是一对多,一个用户可以有多篇文章,Mybatis中也是通过resultMap来对查询结果集进行配置,然后再对查询结果中映射的对象中添加一个新的集合属性(因为是一对多关系),和一对一不同的是resultMap中设置的是collection属性,其他的配置规则基本不变。



    
        
        
        
        
        
        
        
    




        select * from user
        
            
                and password=#{password}
            
            
                and username=#{username}
            
        
    

(4)set

用于sql修改中,会自动去除掉set中的if属性中的.

    
        update user
        
            
                username=#{username},
            
            
                nickname=#{nickname},
            
            
                password=#{password},
            
        
        where id=#{id}
    

(5)foreach

可以对于传入的集合进行遍历,里面的参数如下所示:

collection:用于绑定方法参数中的集合

item:遍历时的每一个对象

open:语句块开头的字符串

close:语句块结束的字符串

separator:每次遍历之间的分隔符

示例,根据list中的id号来进行批量删除:

   
 
        delete from user where id in 
        #{item}
    
    

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号