学习记录-MyBatis基础

1.MyBatis基础操作

前提准备:

        1.准备数据库表

        2.创建一个springboot工程,并引入对应的依赖,mybatis,mysql

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>x.x.x</version>
</dependency>
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <scope>runtime</scope>
</dependency>

        3.设置数据库连接,在spring boot工程中,找到application.properties文件

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url   
#localhost为本地服务器默认地址,3306为数据库端口号,mybatis为连接数据库名称
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234

        4.创建数据库中表对应的实体类,

        5.准备Mapper接口类

        @Mapper注解:表示当前接口为mybatis中的Mapper接口
        程序运行时会自动创建接口的实现类对象(代理对象),并交给Spring的IOC容器管理

操作数据库

        在Mapper的接口类中,编写方法实现功能,

方法一:直接在方法上使用注解来映射sql语句,

package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}

其中利用#{...}将参数值传递给sql语句

#{...}和${...}都为Mybatis中的占位符,都可以实现参数传递,

区别:

  • #{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换为? 号,按序给 sql 的? 号占位符设置参数值,
  • ${}它可以用于标签属性值和 sql 内部,在sql语句中做字段拼接,存在sql注入问题,

方法二:利用xml文件来映射语句,

        规范:

  1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)

  2. XML映射文件的namespace属性为Mapper接口全限定名一致

  3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

在xml文件中,可以使用动态SQL,随着输入条件的不同,SQL语句发生变化,

<if>标签用于判断条件是否成立成立则拼接其中
<if test="条件表达式">
    sql语句
</if>
<where>标签作用,1.如果其中没有条件成立,则去掉where;
                2.如果where后第一个条件有and或or,去掉and或or
<where>
    sql语句
</where>
<set>标签作用,去掉最后一个语句后面的逗号 
<set>
    sql语句
</set>
<foreach>作用,遍历方法中传递的参数集合
<foreach collection="集合名称" item="集合遍历出来的元素/项" 
         separator="每一次遍历使用的分隔符" 
         open="遍历开始前拼接的片段" close="遍历结束后拼接的片段">
</foreach>
<sql id="片段名称">:定义可重用的SQL片段
<include refid="片段名称">:通过属性refid,指定包含的SQL片段

两种方式的使用场景:

使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

选择何种方式来配置映射,以及认为是否应该要统一映射语句定义的形式,完全取决于你和你的团队。 换句话说,永远不要拘泥于一种方式,你可以很轻松的在基于注解和 XML 的语句映射方式间自由移植和切换。

2.application.properties文件中的其他操作

日志输出

mybatis.configuration.log-impl是MyBatis中用于配置日志输出方式的属性,该属性可以用来设置MyBatis输出SQL日志信息的方式,包括输出到控制台,输出到文件,输出到数据库等;

mybatis.configuration.log-impl=stdout.StdOutImpl 输出到控制台

 开启驼峰命名

作用,如果字段名与属性名符合驼峰命名规则,mybatis会自动通过驼峰命名规则映射

mybatis.configuration.map-underscore-to-camel-case=true
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值