文章目录
- 背景介绍
- [配置连接字符串和 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
也没有进行赋值
解决方法和注解类似:
- 起别名
- 结果映射
- 开启驼峰命名