Mybatis-generator可以方便的生成类,Mapper,XML ,但如有手工添加代码,XML时,再次生成会被覆盖。
采用继承方式解决,在继承的Interface中添加个性化代码,实验成功如下:
假设Mabtis-generator生成 AAAMapper.java
写一个AAAExtendMapper.java
package XXX.mapper;
...
import org.springframework.context.annotation.Primary;
@Mapper
@Primary
public interface AAAExtendMapper extends AAAMapper{
AAA selectByMDevice(String id);
}
写自己扩展的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="XXX.AAAExtendMapper"> <resultMap id="BaseResultMap" ..... </resultMap> <select id="selectByMDevice" parameterType="java.lang.String" resultMap="BaseResultMap"> select * from dsqdasdq where mdevice = #{mdevice,jdbcType=VARCHAR} </select> </mapper>
使用Client类:
public class WaveInfoBasicServiceImpl implements WaveInfoBasicService { @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private AAAExtendMapper mapper;
。。。
}
实测直接使用mapper可以应用Mybatis生成的代码以及个人添加的代码。
这里面的关键就是同时有两个Interface支持Bean,其中扩展接口要加@Primary,