目录
  1. 1. Mybatis
    1. 1.1. 开发步骤
    2. 1.2. mybatis的映射文件解释
    3. 1.3. 增删改查
    4. 1.4. 核心配置文件
    5. 1.5. mybatis的API
    6. 1.6. mybatis的Dao层实现
    7. 1.7. mybatis中的参数传递
    8. 1.8. mybatis获取参数的方式
    9. 1.9. select查询返回格式
    10. 1.10. mybatis 自定义映射
Mybatis

Mybatis

基于java的持久层框架,内部封装了jdbc,使开发者只需要关注sql语句本身。而不需要去处理繁杂的过程。

开发步骤

  1. Maven中添加MyBatis的坐标
  2. 创建user数据表
  3. 编写User实体类
  4. 编写映射文件UserMapper.xml
  5. 编写核心文件SqlMapConfig.xml
  6. 编写测试类

mybatis的映射文件解释

增删改查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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="userMapper">
<select id="findAll" resultType="com.xinyu.entity.User">
select * from user
</select>

<insert id="save" parameterType="com.xinyu.entity.User">
insert into user values (#{id},#{name},#{password})
</insert>

<update id="update" parameterType="com.xinyu.entity.User">
update user set name=#{name} where id = #{id}
</update>

<delete id="delete" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
</mapper>

核心配置文件

environments标签
数据库环境的配置,支持多环境的配置

mapper标签

typeAliases标签

用于定义别名

mybatis的API

1、sqlSessionFactoryBuilder

其中,resource是相对于类的加载路径的。maven工程中,相对于resources文件夹下。

sqlSessionFactory

用于创建sqlSession实例。常用的有2个:

  1. openSession() 默认开启一个事务,但是不会自动提交。
  2. openSession(boolean autoCommit) 参数为true,就会自动提交

sqlSession会话对象

mybatis的Dao层实现

1、传统开发方式

自己编写UserDao接口与实现。

2、使用mapper接口

mapper是DAO层的接口,mapper接口与sql映射文件的绑定:sql文件的namespace 需要为mapper的全类名,sql语句与接口中的方法的绑定:sql语句的id为接口中的方法名

在使用中,我们所写的mapper接口,通过session的getMapper方法,进行代理,得到一个mapper对象。mapper对象调用的方法就是对数据库的增删改查。

mybatis中的参数传递

1、单个普通类型的参数

#{xxx} 中的内容可以随便写什么,mybatis都可以做匹配

1
2
3
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from user where id = #{id} //括号里的id可以换为其他任意的字符。都可以识别到
</delete>

2、多个参数

多个参数的时候,mybatis会包装为一个map传入,map的key是param1、param2或者0,1。代表的值就是我们传入的参数。

1
2
3
<select id="selectUser" resultType = "User"
select * from User where id=#{0} and name=#{1}
</select>

当我们调用mapper的这个方法的时候,我们需要传入2个参数,一个Id,一个name。传入的参数,会变为一个map,我们在文档中获取它们是通过0,1…来获取。

命名参数

为参数使用@param起一个名字,Mybatis就会将这些参数封装进map中,key就是我们自己指定的名字。

3、POJO

取值时取#{POJO的属性名}

4、Map传递

如果我们已经封装为了一个map,就可以直接传递。并且,文档中取值的时候,用的key就是我们自己的map中使用的key。而不是它生成的map的key。

mybatis获取参数的方式

#{key}: 获取参数的值,会使用占位符 ?,预编译到sql中,安全

${key}:获取参数的值,拼接到sql中,有sql注入的问题

在原生的JDBC不支持占位符的地方,可以使用${}

select查询返回格式

查询一条数据,返回为map时

1
2
3
<select id = "getUserMap" resultType = "map"
select * from user where id = #{id}
</select>

查询多条数据,返回为一个map

使用注解 @MapKey(“id”)使用对象的哪个属性作为map 的key。

mybatis 自定义映射

自定义resultMap,实现高级结果集映射

文章作者: Dr-xinyu
文章链接: https://dr-xinyu.github.io/2020/12/07/Mybatis/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 心雨
打赏
  • 微信
  • 支付寶