文章目录
- 背景介绍
- [配置连接字符串和 MyBatis](#配置连接字符串和 MyBatis)
- 持久层代码
-
- [添加 mapper 接口](#添加 mapper 接口)
- [添加 UserInfoXmlMapper. xml](#添加 UserInfoXmlMapper. xml)
- 增删改查操作
背景介绍
MyBatis 的开发有两种方式:
- 注解
- XML
使用
MyBatis注解的方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL,建议使用 XML 来配置映射语句,也就是将SQL语句写在XML配置文件中
MyBatis XML 的方式需要以下两步:
- 配置数据库连接字符串和
MyBatis - 写持久层代码
配置连接字符串和 MyBatis
此步骤需要进行两项测试,数据库连接字符串设置和 MyBatis 的 XML 配置
- 如果是
application.yml文件,配置内容如下
yml
mybatis:
mapper-locations: classpath:mybatis/**Mapper.xml
configuration: # 配置打印 MyBatis⽇志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# map-underscore-to-camel-case: true # 开启驼峰自动转换
配置好之后,这个这个 static 目录下的这个文件名,要和 xml 里面的对应上
持久层代码
持久层代码分两部分:
- 方法定义:
Interface - 方法实现:
XXX.xml

添加 mapper 接口
数据持久层的接口定义
java
package com.glg.mybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserInfoXmlMapper {
}
添加 UserInfoXmlMapper. xml
在 static 里面的 mybatis 文件中,创建一个 UserInfoXmlMapper.xml,然后粘贴:
xml
<?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="com.glg.mybatis.mapper.UserInfoXmlMapper">
<insert id="select">
select * from userinfo;
</insert>
</mapper>
<mapper>标签:需要指定namespace属性,表示命名空间,值为mapper接口的全限定名,包括全包名、类名
<select>查询标签:是用来执行数据库的查询操作的:id:是和Interface(接口) 中定义的方法名称一样的,表示对接口的具体实现方法resultType:是返回的数据类型,也就是开头我们定义的实体类
增删改查操作
增
UserInfoMapper 接口:
java
Integer insert(UserInfo userInfo);
UserInfoMapper.xml 实现
xml
<insert id="insert">
insert into userinfo (username, password, age, gender)
values (#{username}, #{password}, #{age}, #{gender});
</insert>
@Param 设置参数名
如果使用 @Param 设置参数名称的话,使用方法和注解类似
UserInfoMapper 接口:
java
Integer insert(@Param("userinfo") UserInfo userInfo);
UserInfoMapper.xml 实现:
java
<insert id="insert">
insert into userinfo (username, password, age, gender)
values (#{userinfo.username}, #{userinfo.password}, #{userinfo.age}, #{userinfo.gender});
</insert>
返回自增 id
接口定义不变,Mapper.xml 实现设置 useGeneratedKeys 和 keyProperty 属性
java
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into userinfo (username, password, age, gender)
values (#{userinfo.username}, #{userinfo.password}, #{userinfo.age}, #{userinfo.gender});
</insert>
删
UserInfoMapper 接口
java
Integer delete(Integer id);
UserInfoMapper.xml 实现:
java
<delete id="delete">
delete from userinfo where id = #{id};
</delete>
改
UserInfoMapper 接口:
java
Integer update(UserInfo userInfo);
UserInfoMapper.xml 实现:
java
<update id="update">
update userinfo set password = #{password} where id = #{id};
</update>
查
同样的,使用 XML 的方式来进行查询,也存在数据封装的问题
- 我们把
SQL语句进行简单修改,查询更多的字段内容
UserInfoMapper 接口:
java
List<UserInfo> selectAllUser();
UserInfoMapper,xml 实现:
java
<select id="selectAllUser" resultType="com.glg.mybatis.module.UserInfo">
select * from userinfo
</select>
resultType:查询需要加上这个
运行结果:
结果显示:deleteFlag 、createTime、updateTime 也没有进行赋值
解决方法和注解类似:
- 起别名
- 结果映射
- 开启驼峰命名