【JavaEE进阶】 MyBatis使用XML实现增删改查

简介: 【JavaEE进阶】 MyBatis使用XML实现增删改查


🎍前言

准备数据库与相应表,映射对象请参考博主在【JavaEE进阶】MyBatis⼊⻔ 所使用的

原始表数据如下:

MyBatis XML的⽅式需要以下两步:

  1. 配置数据库连接字符串和MyBatis
  2. 写持久层代码

🍀配置连接字符串和MyBatis

application.yml⽂件配置内容如下:

spring:
 datasource:
  url: jdbc:mysql://127.0.0.1:3306/mybatis_test?
   characterEncoding=utf8&useSSL=false
  username: root
  password: 666666
  driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
 configuration: # 配置打印 MyBatis⽇志
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 mapper-locations: classpath:mapper/**Mapper.xml

🍃写持久层代码

持久层代码分两部分

  1. ⽅法定义Interface
  2. ⽅法实现:XXX.xml

🚩添加mapper接⼝

数据持久层的接⼝定义:

@Mapper
public interface UserInfoXMlMapper {
    
}

🚩添加UserInfoXMLMapper.xml

数据持久成的实现,MyBatis的固定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="org.example.mybatis.mapper.UserInfoXMlMapper">
</mapper>

创建UserInfoXMLMapper.xml,路径参考yml中的配置

🚩单元测试

单元测试类创建如下:

测试类初始代码如下:

@SpringBootTest
class UserInfoXMlMapperTest {
    @Autowired
    private UserInfoXMlMapper userInfoXMlMapper;
}

接下来我们就可以进行实现增删改查了。我们下来依旧采用单元测试的方式进行测试,有不会单元测试的小伙伴,可以看博主上面关于MyBates入门的链接,里面有介绍

🌴增(Insert)

UserInfoXMlMapper接⼝:

Integer insert(UserInfo userInfo);

UserInfoXMLMapper.xml实现如下:

<insert id="insert">
    insert into userinfo (username, `password`, age, gender, phone)
     values (#{username}, #{password}, #{age},#{gender},#{phone})
</insert>

测试单元代码如下:

@Test
void insert() {
    UserInfo userInfo = new UserInfo();
    userInfo.setUsername("陈平安");
    userInfo.setPassword("123456");
    userInfo.setAge(18);
    userInfo.setGender(1);
    userInfo.setPhone("123456789");
    int cound = userInfoXMlMapper.insert(userInfo);
    System.out.println("改变数据行数"+cound);
}

启动测试结果如下:

查询数据库如下:

已成功添加

🚩返回⾃增id

接⼝定义不变,UserInfoXMLMapper.xml实现设置useGeneratedKeys和keyProperty属性

<insert id="insert" useGeneratedKeys="true" keyProperty="id">
    insert into userinfo (username, `password`, age, gender, phone)
     values (#{username}, #{password}, #{age},#{gender},#{phone})
</insert>

进行单元测试:

@Test
void insert() {
    UserInfo userInfo = new UserInfo();
    userInfo.setUsername("陈平安");
    userInfo.setPassword("123456");
    userInfo.setAge(18);
    userInfo.setGender(1);
    userInfo.setPhone("123456789");
    int cound = userInfoXMlMapper.insert(userInfo);
    System.out.println("改变数据行数"+cound+"自增id:"+userInfo.getId());
}

启动测试结果如下:

🎋删(Delete)

UserInfoXMlMapper接⼝:

Integer delete(Integer id);

UserInfoXMLMapper.xml实现如下:

</insert>
<delete id="delete">
    delete from userinfo where id = #{id}
</delete>

测试单元代码如下:

@Test
void delete() {
    int count = userInfoXMlMapper.delete(1);
    System.out.println("改变行数:" + count);
}

启动元测试代码如下:

🎄改(Update)

UserInfoXMlMapper接口如下:

Integer update(UserInfo userInfo);

UserInfoXMLMapper.xml实现代码如下:

<update id="update">
    update userinfo set username=#{username} where id=#{id}
</update>

测试单元代码如下:

@Test
void update() {
    UserInfo userInfo = new UserInfo();
    userInfo.setId(8);
    userInfo.setUsername("宁姚");
    int count = userInfoXMlMapper.update(userInfo);
    System.out.println("改变行数:"+count);
}

测试单元代码启动:

修改成功

🌲查(Select)

查询所有内容

UserInfoXMlMapper接口代码如下:

List<UserInfo> queryAllUser();

UserInfoXMLMapper.xml代码如下:

<select id="queryAllUser" resultType="org.example.mybatis.model.UserInfo">
    select * from userinfo
</select>
  • resultType :是返回的数据类型,也就是开头我们定义的实体类

启动测试类如下:

我们上面在进行查询所有内容时,结果显⽰:deleteFlag,createTime,updateTime没有进⾏赋值

这是由于数据库与java命名规则不同,数据库的蛇形将转换成驼峰,所以无法识别。

解决方法有以下三种:

  1. 起别名
  2. 结果映射
  3. 开启驼峰命名

关于第一种与第三种方法,与使用注解一摸一样,所以博主这里不做讲解,大家可以参考博主写的 【JavaEE进阶】 MyBatis使用注解实现增删改查 里面的解决方法。

🚩结果映射

我们只需要使用下列方式提前声明

在使用的时候我们只需要,引入resultMap="BaseMap"即可

<select id="queryAllUser" resultMap="BaseMap">
    select * from userinfo
</select>

⭕总结

关于《【JavaEE进阶】 MyBatis使用XML实现增删改查》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

相关文章
|
3月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
70 1
|
5月前
|
Java 数据库连接 数据库
mybatis plus 中增删改查及Wrapper的使用
mybatis plus 中增删改查及Wrapper的使用
262 3
|
4月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
400 0
|
6月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
79 3
|
6月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
91 2
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
|
5月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
6月前
|
XML 关系型数据库 数据库
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
611 0
|
2月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
152 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。