总结 MyBatis 的XML实现方法

[复制链接]
发表于 2025-10-1 20:46:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
1 设置毗连字符串和MyBatis
2 写长期层代码
2.1 添加mapper接⼝
3 增编削查利用 
3.1 增(Insert)
3.2 删(Delete) 
3.3 改(Update) 
3.4 查(Select) 

MyBatis XML的⽅式须要以下两步:
设置数据库毗连字符串和MyBatis
写长期层代码
1 设置毗连字符串和MyBatis

此步调须要进⾏两项设置,数据库毗连字符串设置和MyBatis的XML⽂件设置。
假如是application.yml⽂件,设置内容如下:

2 写长期层代码

长期层代码分两部分
1. ⽅法界说Interface
2. ⽅法实现:XXX.xml

2.1 添加mapper接⼝

数据长期层的接⼝界说:
  1. import com.example.demo.model.UserInfo;
  2. import org.apache.ibatis.annotations.Mapper;
  3. import java.util.List;
  4. @Mapper
  5. public interface UserInfoXMlMapper {
  6.      List<UserInfo> queryAllUser();
  7. }
复制代码
2.2 添加UserInfoXMLMapper.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="org.example.mybatisdemo.mapper.UserInfoXMLMapper">
  5.    
  6. </mapper>
复制代码
创建UserInfoXMLMapper.xml,路径参考yml中的设置
 
查询全部⽤⼾的具体实现:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.example.demo.mapper.UserInfoXMlMapper">
  5.      <select id="queryAllUser" resultType="com.example.demo.model.UserInfo">
  6.          select username,`password`, age, gender, phone from userinfo
  7.      </select>
  8. </mapper>
复制代码
 
2.3 单元测试 
  1. @SpringBootTest
  2. class UserInfoMapperTest {
  3.      @Autowired
  4.      private UserInfoMapper userInfoMapper;
  5.      @Test
  6.      void queryAllUser() {
  7.      List<UserInfo> userInfoList = userInfoMapper.queryAllUser();
  8.          System.out.println(userInfoList);
  9.      }
  10. }
复制代码
3 增编削查利用 

3.1 增(Insert)

UserInfoMapper接⼝:
  1. Integer insertUser(UserInfo userInfo);
复制代码
UserInfoMapper.xml实现:
  1. <insert id="insertUser">
  2.      insert into userinfo (username, `password`, age, gender, phone) values (#
  3. {username}, #{password}, #{age},#{gender},#{phone})
  4. </insert>
复制代码
假如使⽤@Param设置参数名称的话,使⽤⽅法和注解类似
UserInfoMapper接⼝:
  1. Integer insertUser(@Param("userinfo") UserInfo userInfo);
复制代码
UserInfoMapper.xml实现:
  1. <insert id="insertUser">
  2. insert into userinfo (username, `password`, age, gender, phone) values
  3. (#{userinfo.username},#{userinfo.password},#{userinfo.age},#
  4. {userinfo.gender},#{userinfo.phone})
  5. </insert>
复制代码
返回⾃增id
接⼝界说稳固,Mapper.xml实现设置useGeneratedKeys和keyProperty属性.
  1. <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
  2. insert into userinfo (username, `password`, age, gender, phone) values
  3. (#{userinfo.username},#{userinfo.password},#{userinfo.age},#
  4. {userinfo.gender},#{userinfo.phone})
  5. </insert>
复制代码
3.2 删(Delete) 

UserInfoMapper接⼝:
  1. Integer deleteUser(Integer id);
复制代码
 UserInfoMapper.xml实现:
  1. <delete id="deleteUser">
  2. delete from userinfo where id = #{id}
  3. </delete>
复制代码
3.3 改(Update) 

UserInfoMapper接⼝:
  1. Integer updateUser(UserInfo userInfo);
复制代码
UserInfoMapper.xml实现:
  1. <update id="updateUser">
  2. update userinfo set username=#{username} where id=#{id}
  3. </update>
复制代码
3.4 查(Select) 

同样的,使⽤XML的⽅式进⾏查询,也存在数据封装的题目 我们把SQL语句进⾏简单修改,查询更多的字段内容.
  1. <select id="queryAllUser" resultType="com.example.demo.model.UserInfo">
  2. select id, username,`password`, age, gender, phone, delete_flag,
  3. create_time, update_time from userinfo
  4. </select>
复制代码
 结果显⽰:deleteFlag,createTime,updateTime也没有进⾏赋值.
办理办法和注解类似:
1. 起别名
2. 结果映射
3. 开启驼峰定名
此中1,3的办理办法和注解⼀样,不再多说,接下来看下xml假如来写结果映射
Mapper.xml
  1. <resultMap id="XmlBaseMap" type="com.example.demo.model.UserInfo">
  2. <id column="id" property="id"></id>
  3.      <result column="delete_flag" property="deleteFlag"></result>
  4.      <result column="create_time" property="createTime"></result>
  5.      <result column="update_time" property="updateTime"></result>
  6. </resultMap>
  7. <select id="queryAllUser" resultMap="XmlBaseMap">
  8.      select id, username,`password`, age, gender, phone, delete_flag,
  9.   create_time, update_time from userinfo
  10. </select>
复制代码
 
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表