Mybatis

1.学习Mybatis相关基础

myBatis是一个持久层框架,主要作用就是在java中操作数据库,其实就是在jdbc的基础上进行了封装,使用mybatis之后,开发者不用再花费精力去处理诸如注册驱动、创建Connection、配置Statement等繁琐过程。与之前学习的spring mvc要运行在web容器不同,mybatis不需要web容器,在c/s架构和b/s架构下均可运行。早期叫做iBatis,后来改名为myBatis,官网:http://www.mybatis.org/mybatis-3/
在官网上有中文版的介绍和文档,mybatis同时支持xml和注解,这里xml用的多一些。

2.掌握Mybatis体系结构

在这里插入图片描述

3. 搭建mybatis环境

3.1资源文件SqlMapConfig.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

3.2 配置映射文件xml 一般存放在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">

3.3数据库配置

driver=com.mysql.cj.jdbc.Driver
user=root
psw=
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC

3.4在Spring容器中配置对象
在这里插入图片描述
配置数据库语句映射
在这里插入图片描述
3.5编写Dao层
在这里插入图片描述
编写mapper
在这里插入图片描述
参数解析
在这里插入图片描述
测试
在这里插入图片描述
3.6 Mybatis中 #和 $参数取值的区别

#其实是占位符,通过控制台打印的sql语句可以看出,他是以?进行占位的,类似JDBC的PreparedStatement,可以防止SQL注入的问题,在上面的sql语句中我们写的是#{id},实际上#{}里面的内容可以写成其他字符串#{xxx},这里只是起着占位符的作用,mybatis会将sqlSession.selectList或sqlSession.selectOne等方法中的第二个参数赋值进去。因此如果sql语句需要获取用户的输入从而进行动态拼接的话,就需要使用#{}。 是 字 符 串 拼 接 , 参 数 会 被 直 接 拼 接 到 S Q L 语 句 中 , 该 方 式 会 有 S Q L 注 入 问 题 , 如 果 S Q L 语 句 有 我 们 程 序 员 直 接 写 好 , 不 需 要 用 户 输 入 的 话 , 可 以 使 用 是字符串拼接,参数会被直接拼接到SQL语句中,该方式会有SQL注入问题,如果SQL语句有我们程序员直接写好,不需要用户输入的话,可以使用 SQLSQLSQL使{},不过一般还是建议使用#{}。

3.7 mybatis中的字段名与属性名不一致的情况

在实际开发中有时候会遇到数据库表中的字段名与实体类中的属性名不一致的情况,例如在t_student表中有一个字段名叫做password,然后在其对应的Student实体类中叫做pwd,此时要想进行查询操作的话,可以通过以下两种方式解决

在SQL语句中使用别名

<select id="selectStudentById" resultType="student">
    SELECT id,name,age,score,password pwd FROM t_student where id=#{id}
</select>

使用结果映射 resultMap

<resultMap id="studentMapper" type="student">
    <id column="id" property="id"/>
    <result column="password" property="pwd"/>
</resultMap>

<select id="selectStudentById" resultMap="studentMapper">
    SELECT id,name,age,score,password FROM t_student where id=#{id}
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值