当前位置: 首页 > news >正文

MyBatis的xml实现方式

1、该项目引入的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.oopsguy.kaptcha</groupId><artifactId>kaptcha-spring-boot-starter</artifactId><version>1.0.0-beta-2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>4.0.0</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.example.demo.DemoApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

2、引入配置文件

(1)yml的

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=falseusername: 你的数据库名称password: 你的数据库密码driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration: # 配置打印 MyBatis⽇志log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath:mapper/**Mapper.xml

(2)properties的

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?
characterEncoding=utf8&useSSL=false
#连接数据库的⽤⼾名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=root
# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
mybatis.mapper-locations=classpath:mapper/**Mapper.xml

3、我们设置的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.bite.mybatis.mapper.UserInfoXmlMapper"></mapper>   

4、查找操作(只有查询需要写 resultType="com.example.demo.UserInfo")

(1)各个文件存放的位置

(2)接口代码

package com.example.demo;import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface UserInfoXmlMapper {List<UserInfo> queryUserList();
}

(3)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.example.demo.UserInfoXmlMapper"><select id="queryUserList" resultType="com.example.demo.UserInfo">select * from userinfo</select>
</mapper>

(4)测试部分代码(@SpringBootTest记得这个注解一定要加)

package com.example.demo;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UserInfoXmlMapperTest {
@Autowired
private UserInfoXmlMapper userInfoXmlMapper;@Testvoid queryUserList() {userInfoXmlMapper.queryUserList();}
}

5、插入操作

(1)接口部分代码

Integer insert(UserInfo userInfo);

(2)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.example.demo.UserInfoXmlMapper"><select id="queryUserList" resultType="com.example.demo.UserInfo">select * from userinfo</select><insert id="insert">insert intouserinfo(username,password,age,gender,phone)values(#{username},#{password},#{age},#{gender},#{phone})</insert>
</mapper>

(3)测试部分代码

  @Testvoid insert() {UserInfo userInfo=new UserInfo();userInfo.setUsername("wanwu");userInfo.setAge(17);userInfo.setPassword("147258369");userInfo.setGender(1);userInfoXmlMapper.insert(userInfo);}

6、删除操作

(1)接口部分代码

Integer delete(Integer id);

(2)XML部分代码

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

(3)测试部分代码

 @Testvoid delete() {userInfoXmlMapper.delete(14);}

7、改操作

(1)接口部分代码

 Integer update(String password,Integer id);

(2)XML部分代码(idea创建的项目)

<update id="update">update userinfo setpassword=#{password}where id=#{id}</update>

(2)XML部分代码(阿里云创建的项目)

<update id="update">update userinfo setpassword=#{param1}where id=#{param2}</update>

(3)测试部分代码

 @Testvoid update() {userInfoXmlMapper.update("999999",15);}

8、mybatis赋值失败原因

(1)起别名

 <select id="queryUserList" resultType="com.example.demo.UserInfo">select delete_flag as deleteFlag from userinfo</select>

(2)通过resultmap方式(要记得把对象写全,id username等都映射上

<resultMap id="base" type="com.example.demo.UserInfo"><result column="delete_flag" property="deleteFlag"></result>
</resultMap>
<select id="queryUserList" resultMap="base">select * from userinfo
</select>

(3)配置yml文件(驼峰命名)

mybatis:configuration:map-underscore-to-camel-case: true

9、返回自增主键

其他不变,和普通插入操作一样,就是在xml地方增加了一些设置

(1)xml地方代码

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

http://www.lryc.cn/news/332440.html

相关文章:

  • 大模型prompt技巧——思维链(Chain-of-Thought)
  • 内网穿透的应用-如何在Android Termux上部署MySQL数据库并实现无公网IP远程访问
  • 面试算法-133-区间子数组个数
  • 物联网实战--入门篇之(八)嵌入式-空气净化器
  • macOS上QT打开麦克风和摄像头的权限问题
  • 鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题
  • Spring源码解析上
  • 第九题:最大间隙
  • 【随笔】Git -- 高级命令(中篇)(七)
  • 可视化大屏 - 项目1
  • Collection与数据结构 链表与LinkedList(三):链表精选OJ例题(下)
  • 如何通过C++身份证实名认证接口实现实名认证功能
  • 用html写一个爱心
  • 如何看到 synchronized 背后的“monitor 锁”?
  • 如何建立一个网页模版
  • P8783 [蓝桥杯 2022 省 B] 统计子矩阵
  • 【C++】list介绍
  • 【SQL Server】2. 将数据导入导出到Excel表格当中
  • 基于JAVA+SSM+VUE的前后端分离的大学竞赛管理系统
  • 音频转换工具 Bigasoft FLAC Converter for Mac
  • 洛谷 P4554 小明的游戏
  • 序列化案例实操(统计每一个手机号耗费的总上行流量、总下行流量、总流量)
  • 使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示
  • 编程大牛坚持了 10 年的 10 个编程好习惯
  • QEMU上PAC功能验证与异常解析
  • 简约轻量-失信录系统源码
  • 前端入门系列-HTML-HTML常见标签(注释,标题,段落,换行)
  • 【mysql 第3-10条记录怎么查】
  • 1.Git是用来干嘛的
  • Git安装教程(图文安装)