返回

Mybatis源码分析(七) - 注解方式配置

发布时间:2022-12-06 13:31:21 221
# sql

注解方式就是将SQL语句直接写在接口上,对于需求比较简单的系统,效率较高。缺点在于,每次修改sql语句
都要编译代码,对于复杂的sql语句可编辑性和可读性都差,一般不建议使用这种配置方式;

包含下面几种

@Select
@Results
@Insert
@Update
@Delete

mapper接口示例:

@Results(id="jobInfo",value={
@Result(property="id",column="id",id = true),
@Result(property="userId",column="user_id"),
@Result(property="compName",column="comp_name"),
@Result(property="years",column="years"),
@Result(property="title",column="title")
})
@Select("select id, user_id, comp_name, years, title from t_job_history"
+ " where user_id = #{userId}")
List selectByUserId(int userId);

@ResultMap("jobInfo")
@Select("select id, user_id, comp_name, years, title from t_job_history")
List selectAll();

@Insert("insert into t_job_history (id, user_id, comp_name, years, title)"
+ " values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER},"
+ "#{compName,jdbcType=VARCHAR},"
+ "#{years,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR})")
@Options(useGeneratedKeys=true,keyProperty="id")
int insert(TJobHistory record);

测试方法:

@Test
// 注解测试
public void testAnno() {
// 2.获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 3.获取对应mapper
TJobHistoryAnnoMapper mapper = sqlSession.getMapper(TJobHistoryAnnoMapper.class);

List list = mapper.selectByUserId(1);
System.out.println(list.size());

List listAll = mapper.selectAll();
System.out.println(listAll.size());

TJobHistory job = new TJobHistory();
job.setTitle("产品经理");
job.setUserId(1);
job.setCompName("美团");
job.setYears(3);

mapper.insert(job);
System.out.println(job.getId());
}

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线