本笔记记录于https://www.bilibili.com/video/BV1NE411Q7Nx

配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致

需求:根据id查询用户
1、在UserMapper中添加对应方法

public interface UserMapper {//查询全部用户List<User> selectUser();//根据id查询用户User selectUserById(int id);
}

2、在UserMapper.xml中添加Select语句

<select id="selectUserById" resultType="com.kuang.pojo.User">
select * from user where id = #{id}
</select>

3、测试类中测试

@Test
public void tsetSelectUserById() {SqlSession session = MybatisUtils.getSession();  //获取SqlSession连接UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.selectUserById(1);System.out.println(user);session.close();
}

根据 密码 和 名字 查询用户
1、在接口方法中,参数直接传递Map;

User selectUserByNP2(Map<String,Object> map)

2、编写sql语句的时候,需要传递参数类型,参数类型为map

<select id="selectUserByNP2" parameterType="map" resultType="com.kuang.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>

3、在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!

Map<String, Object> map = new HashMap<String, Object>();
map.put("username","小明");
map.put("pwd","123456");
User user = mapper.selectUserByNP2(map);

1、在接口方法的参数前加 @Param属性

2、Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型

//通过密码和名字查询用户
User selectUserByNP(@Param("username") String username,@Param("pwd") String pwd);/*<select id="selectUserByNP" resultType="com.kuang.pojo.User">select * from user where name = #{username} and pwd = #{pwd}</select>
*/

总结:如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
注意点:增、删、改操作需要提交事务!

核心配置文件

mybatis-config.xml 系统核心配置文件

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。

能配置的内容如下:

configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
<!-- 注意元素节点的顺序!顺序不对会报错 -->

environments元素

<environments default="development"><environment id="development"><transactionManager type="JDBC"><property name="..." value="..."/></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment>
</environments>

配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行环境(通过default指定)

子元素节点:environment

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

数据源是必须配置的。

有三种内建的数据源类型

type="[UNPOOLED|POOLED|JNDI]")
unpooled:这个数据源的实现只是每次被请求时打开和关闭连接。

pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。

数据源也有很多第三方的实现,比如dbcp,c3p0,druid等等…

详情:点击查看官方文档

这两种事务管理器类型都不需要设置任何属性。

具体的一套环境,通过设置id进行区别,id保证唯一!

子元素节点:transactionManager - [ 事务管理器 ]

子元素节点:数据源(dataSource)

mappers:
映射器 : 定义映射SQL语句文件

既然 MyBatis 的行为其他元素已经配置完了,我们现在就要定义 SQL 映射语句了。但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等。映射器是MyBatis中最核心的组件之一,在MyBatis 3之前,只支持xml映射器,即:所有的SQL语句都必须在xml文件中配置。而从MyBatis 3开始,还支持接口映射器,这种映射器方式允许以Java代码的方式注解定义SQL语句,非常简洁。

引入资源方式

<!-- 使用相对于类路径的资源引用 -->
<mappers><mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers><mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
<!--
使用映射器接口实现类的完全限定类名
需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mappers><mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>
<!--
将包内的映射器接口实现全部注册为映射器
但是需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mappers><package name="org.mybatis.builder"/>
</mappers>

Mapper文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.mapper.UserMapper"></mapper>

namespace中文意思:命名空间,作用如下:

namespace的命名必须跟某个接口同名

接口中的方法与映射文件中sql语句id应该一一对应

namespace和子元素的id联合保证唯一 , 区别不同的mapper

绑定DAO接口

namespace命名规则 : 包名+类名

MyBatis 的真正强大在于它的映射语句,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦。

Properties优化
数据库这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。具体的官方文档

我们来优化我们的配置文件

第一步 ; 在资源目录下新建一个db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456

第二步 : 将文件导入properties 配置文件

<configuration><!--导入properties文件--><properties resource="db.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

typeAliases优化
类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。

<!--配置别名,注意顺序-->
<typeAliases><typeAlias type="com.kuang.pojo.User" alias="User"/>
</typeAliases>

MyBatis:CRUD操作及配置解析相关推荐

  1. 二、CRUD操作以及配置解析

    二.CRUD操作以及配置解析 1.在原来基础上加上增加.删除和更改 在UserDao的接口中 /*** 根据id查询用户*/User getUserById(int id);/*** 增加一个用户*/ ...

  2. MyBatis02:CRUD操作和配置解析

    MyBatis02:CRUD操作和配置解析 CRUD select 根据id查询用户 接口方法 public interface UserMapper {//查询所有用户List<User> ...

  3. mybatis CRUD操作

    mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...

  4. 用于MyBatis CRUD操作的Spring MVC 3控制器

    到目前为止,我们已经为域类" User "创建了CRUD数据库服务,并且还将MyBatis配置与Spring Configuration文件集成在一起. 接下来,我们将使用Spri ...

  5. MyBatis 源码解读-配置解析过程

    首先我们要清楚的是配置解析的过程全部只解析了两种文件.一个是mybatis-config.xml 全局配置文件.另外就是可能有很多个的Mapper.xml 文件,也包括在Mapper 接口类上面定义的 ...

  6. 使用mybatis完成简单的crud操作

    目录 1.配置核心配置文件和jdbc.properties 2. 装mybatis工具类 3.创建实体类 4.创建mapper接口 5.编写测试类 下面介绍基于注解的方式实现基本的 CRUD 操作 1 ...

  7. mybatis mysql crud_Mybatis实现CRUD操作

    Mybatis实现CRUD操作 导入相关依赖 创建实体类User 创建Mybatis主配置文件:SqlMapConfig.xml 创建IUserDao接口. 创建于接口对应的映射配置文件:IUserD ...

  8. Java-Mybatis(二): Mybatis配置解析、resultMap结果集映射、日志、分页、注解开发、Mybatis执行流程分析

    Java-Mybatis-02 学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV1NE411Q7Nx 学习资料:mybatis 参考文档 – ht ...

  9. Mybatis框架实现CRUD操作

    Mybatis框架实现CRUD操作 自定义mybatis流程 mybatis基于代理dao的CRUD操作(重点) E:\JAVAworkspace\mybatis_CRUD CRUD中可能遇到的问题: ...

  10. 使用MyBatis实现CRUD操作

    MyBatis 1.使用MyBatis实现CRUD操作 1.1 根据id查询信息 1.2 实现存入用户信息 1.3 更新用户信息 1.4 删除用户信息 1.5 模糊查询 1.6 #{}和${}的区别 ...

最新文章

  1. Ubuntu 16.04 amd64 bond mode6 配置
  2. markdown编辑器语法——背景色
  3. 安徽职高计算机专业对口学校,安徽对口高考学校
  4. 【中级软考】什么是非对称加密算法?
  5. LeetCode 1755. 最接近目标值的子序列和(状态枚举 + 双指针)
  6. 20-30-010-安装-kafka-manager
  7. http之content-type
  8. PHP开源管理系统 Gms,GMS 一个成熟的gms系统,拥有基本的权限管理和分类,后台很好 Windows Develop 249万源代码下载- www.pudn.com...
  9. win10下安装Ubuntu16.04双系统 (gtx1050ti)(联想legion)
  10. 离职“招黑”的6种行为,最后一个太惹人反感!
  11. P1685 飞跃悬崖
  12. 2.1 Java范型
  13. 骗子预警,大家注意,飞鸟资源网 www.fn121.c*o*m
  14. 搭建pxe远程安装服务器
  15. 【半导体先进工艺制程技术系列】FinFET和UTB-SOI简介
  16. 蓝桥杯2020年填空题既约分数
  17. 论文阅读之Arcface
  18. mybatis与ibatis区别
  19. Python3 - 三天学会微信小程序(Python后端研习)
  20. 再分享个竞品分析报告

热门文章

  1. 舱机器人尾巴毛茸茸_这个毛茸茸的机器人不仅可撸,还会摇尾巴
  2. GNSS文件下载网址
  3. 关闭计算机后为什么重新启动,电脑关机后自动重启是怎么回事什么原因的解决方法 - 系统家园...
  4. 谷歌Gmail注册方法
  5. 计算机考研a区院校,这些985院校没有A+学科!985院校的哪些专业在C+之下?
  6. Android Fingerprint完全解析(一) :Fingerprint整体框架
  7. 信度和效度经典例子_效度与信度的通俗解释
  8. 一行代码学会Java--2.用IDEA神器编写“你好,Java”
  9. Php中什么时候用单引号,PHP中单引号和双引号的用法举例
  10. ps计算机内存不足请保存文件并关闭,PS cc 2018保存文件提示内存不足,性能首选项无法设置的解决方法...