【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实现增删改查》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

相关文章
|
17天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
20 0
|
1月前
ssm使用全注解实现增删改查案例——web.xml
ssm使用全注解实现增删改查案例——web.xml
9 0
|
1月前
ssm使用全注解实现增删改查案例——applicationContext.xml
ssm使用全注解实现增删改查案例——applicationContext.xml
10 0
|
1月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
26 0
|
5天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
13 0
|
1月前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
SQL Java 数据库连接
Mybatis中Mapper.xml 文件使用注释遇到的坑
Mybatis中Mapper.xml 文件使用注释遇到的坑
|
1月前
|
XML Java 数据库连接
【Mybatis】XML映射文件
【Mybatis】XML映射文件
27 0
|
2月前
|
SQL XML Java
【JavaEE进阶】 MyBatis之动态SQL
【JavaEE进阶】 MyBatis之动态SQL