1.配置连接字符串和MyBatis1.1 application.yml⽂件# 数据库连接配置 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8useSSLfalse username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver # 配置 mybatis xml 的文件路径在 resources/mapper 创建所有表的 xml 文件 mybatis: mapper-locations: classpath:mapper/**Mapper.xmlapplication.properties⽂件#驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的url spring.datasource.urljdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8useSSLfalse #连接数据库的用户名 spring.datasource.usernameroot #连接数据库的密码 spring.datasource.passwordroot # 配置 mybatis xml 的文件路径在 resources/mapper 创建所有表的 xml 文件 mybatis.mapper-locationsclasspath:mapper/**Mapper.xml1.2 添加 mapper 接⼝Mapper public interface UserInfoXMLMapper { ListUserInfo queryAllUser(); }1.3 添加XML?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.demo.mapper.UserInfoMapper /mapper创建UserInfoXMLMapper.xml, 路径参考yml中的配置查询所有⽤⼾的具体实现 ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.demo.mapper.UserInfoXMLMapper select idqueryAllUser resultTypecom.example.demo.model.UserInfo select username,password, age, gender, phone from user_info /select /mappermapper标签需要指定namespace属性表⽰命名空间值为 mapper 接⼝的全限定名包括全包名.类名。查询标签是⽤来执⾏数据库的查询操作的id是和Interface接⼝中定义的⽅法名称⼀样的表⽰对接⼝的具体实现⽅法。resultType是返回的数据类型也就是开头我们定义的实体类.2.增删改查具体实现2.1实现mapper接口Mapper public interface UserInfoMapperXML { void insert(UserInfo userInfo); void delete(Integer id); void update(UserInfo userInfo); ListUserInfo selectAll(); }这里的方法名要与xml id名对应2.2xml语句的实现insert idinsert insert into user_info(username, password, age, phone,gender) values (#{username}, #{password},#{age},#{phone},#{gender}); /insert delete iddelete delete from user_info where id #{id}; /delete update idupdate update user_info set password #{password} where id #{id}; /update实现测试类Test void insert() { UserInfo userInfo new UserInfo(); userInfo.setUsername(小王); userInfo.setPassword(123456); userInfo.setAge(12); userInfo.setGender(0); userInfo.setPhone(1554545525); userInfoMapperXML.insert(userInfo); } Test void delete(){ userInfoMapperXML.delete(1); } Test void update() { UserInfo userInfo new UserInfo(); userInfo.setId(2); userInfo.setPassword(123456); userInfoMapperXML.update(userInfo); }3.遇到的问题3.1 格式无法解析MyBatis 解析 XML 时会把这个空格当成类名的一部分导致找不到 com.example.rizhi.model.UserInfo带前后空格这个类直接报 ClassNotFoundException3.2 字段映射本次用指定映关系来解决 还可以起别名方式 和 配置文件驼峰命名3.2.1原因数据库列名 下划线风格无法区分大小写 Java 属性名 驼峰风格 两者名字不一样 MyBatis 不知道怎么对应select idselectAllresultType com.example.rizhi.model.UserInfo select id ,username,password,age,gender,phone,delete_flag,create_time,update_time from user_info; /select结果显示deleteFlag createTime 显示为null3.2.2 办法resultMap idBaseMap typecom.example.demo.model.UserInfo id columnid propertyid/id result columndelete_flag propertydeleteFlag/result result columncreate_time propertycreateTime/result result columnupdate_time propertyupdateTime/result /resultMap select idqueryAllUser resultMapBaseMap select id, username,password, age, gender, phone, delete_flag, create_time, update_time from user_info /selectresultMap 给 MyBatis 写一份字段属性对应说明书让它能正确把数据库查询结果封装到 Java 实体对象里解决命名风格不匹配的问题。