Mybatis自己写mapper.xml

本文档介绍了如何在Mybatis中自定义mapper.xml文件,包括编写步骤和mapper类的设置。同时,强调了调用mapper方法必须在Service层进行,以确保Mapper的正确注入和方法调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、mapper.xml 里面自己写文件

     

   <select id="countByPduName" resultType="java.lang.Integer" parameterType="java.lang.String" >
    select 
    count(id)
    from t_envnew
    where name = #{name,jdbcType=VARCHAR}
  </select>

2、mapper类

     

   int countByPduName(String name);

3、调用方法,里面含有自己写的数据库这种格式的拼接方法

     注意要调用Mapper方法,必须要在Service里调用,只有在Service里面才能注入Mapper方法成功

[{"jobName":"PduOne-ModuleOne-build","version":"main_dev1.0.0"},{"jobName":"PduOne-ModuleOne-dev","version":"main_dev1.0.0"},{"jobName":"PduOne-ModuleOne-test","version":"main_dev1.0.0"}]

@Override
	public boolean addEnvNew(String pduName, String jobName, String branch) {
		int i = 0;
		try {
			StringBuilder sBuilder = new StringBuilder();
			JSONObject jsonThree = new JSONObject();
			int envNews = envNewMapper.countByPduName(pduName);
			if (envNews == 0) {
				Map map = new HashMap();
				map.put("jobName", jobName);// map里面装有yes
				map.put("version", branch);
				String str = JSON.toJSONString(map);
				sBuilder.append(str);
				String stringnew = "[" + sBuilder + "]";
				EnvNew envNew = new EnvNew();
				envNew.setName(pduName);
				envNew.setService(stringnew);
				envNewMapper.insert(envNew);
				return true;
			} else {
				List<EnvNew> envNewList = envNewMapper.selectByPduName(pduName);
				if (envNewList.size() > 0) {
					i = envNewMapper.selectIDByPduName(pduName);
					for (EnvNew envNew : envNewList) {
						String server = envNew.getService();
						String servernew = server.replace("[", "").replace("]", "").trim();
						sBuilder.append(servernew);
						System.out.println(server);
					}
				}

				Map map = new HashMap();
				map.put("jobName", jobName);// map里面装有yes
				map.put("version", branch);
				String str = JSON.toJSONString(map);
				sBuilder.append(",");
				sBuilder.append(str);
				String stringnew = "[" + sBuilder + "]";
				EnvNew envNew = new EnvNew();
				if (envNewList.size() > 0) {
					envNew.setId(i);
				}
				envNew.setName(pduName);
				envNew.setService(stringnew);
				envNewMapper.updateByPrimaryKey(envNew);
				System.out.println(jsonThree.toString());
				return true;
			}
		} catch (Exception e) {
			// TODO: handle exception
			Date date = new Date();
			String msg = String.format(pduName + "/" + jobName + "/" + date + ":" + e.getCause());
			logger.error("向envnew数据表增加数据报错:" + msg);
			return false;
		}

	}


      

### MyBatis无法加载Mapper XML文件的原因分析 当遇到MyBatis无法加载`mapper.xml`的情况时,通常是因为配置不正确或路径设置错误。以下是可能导致此问题的一些常见原因以及解决方案。 #### 配置类路径资源未找到 如果`mybatis-config.xml`中的映射器位置指定有误,则可能会导致找不到对应的XML文件。确保在`mybatis-config.xml`中正确定义了扫描包的位置[^1]: ```xml <mappers> <package name="com.example.mapper"/> </mappers> ``` 对于Spring Boot项目而言,在application.properties 或 application.yml 文件里也需要指明相应的路径: ```properties # application.properties mybatis.mapper-locations=classpath*:mapper/*.xml ``` 或者YAML格式下: ```yaml # application.yml mybatis: mapper-locations: classpath*:mapper/**/*.xml ``` #### Mapper接口与XML文件名不符 另一个常见的问题是Mapper接口名称和其关联的`.xml`文件的名字并不匹配。为了使它们能够自动配对,这两个名字应该保持一致(除了扩展名外),并且位于相同的目录结构内[^3]。 例如,如果有如下Java接口定义: ```java public interface UserMapper { } ``` 那么相对应的地图文件应当命名为 `UserMapper.xml`, 并放置在同一级别的resources下的相应子文件夹中。 #### 资源不在编译后的ClassPath范围内 有时开发者会把SQL Map文件放在src/main/resources之外的地方,这会造成打包之后这些文件并没有被打入最终JAR/WAR包内的class path里面去。因此运行期就找不见那些必要的Map文件了。所以要确认所有的`*.xml`都处于项目的resource根目录之下或是被包含进了构建工具(如Maven)所管理的标准输出路径之中[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值