MyBatis注解式开发映射语句怎么使用(mybatis,开发技术)

时间:2024-04-29 09:33:08 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

前言

MyBatis中也提供了注解式开发⽅式,采⽤注解可以减少Sql映射⽂件的配置。 当然,使⽤注解式开发的话,sql语句是写在java程序中的,这种⽅式也会给sql语句的维护带来成本。

使⽤注解编写复杂的SQL是这样的:

@Update("<script>updatetable_namesetgrade='三年级'”+"<iftest=\"name!=null\">,name=#{name}</if>”+"<iftest=\"sex!=null\">,sex=#{sex}</if>”+"wherenum=#{num}</script>")voidupdate(Studentstudent);

原则:简单sql可以注解,复杂sql使⽤xml!使用注解式开发以后三兄弟之一的SqlMapper.xml文件就不需要了!

MyBatis注解式开发映射语句怎么使用

1. @Insert注解

二兄弟之一CarMapper接口,用来编写方法

使用@Insert的注解方式,在注解上就可以写上SQL语句,对于SQL语句当中的变量就是pojo类Car对应的变量名

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.Insert;publicinterfaceCarMapper{//使用注解式开发,插入数据@Insert("insertintot_carvalues(null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})")intinsert(Carcar);}

二兄弟之二CarMapperTest,用来测试

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;publicclassCarMapperTest{@TestpublicvoidtestInsert(){SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);//创建Car对象Carcar=newCar(null,"666","丰田霸道",32.0,"2023-1-9","燃油车");intcount=mapper.insert(car);System.out.println(count);sqlSession.commit();sqlSession.close();}}

执行结果:

MyBatis注解式开发映射语句怎么使用

2. @Delete注解

二兄弟之一CarMapper接口,用来编写方法

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.Insert;publicinterfaceCarMapper{//使用注解式开发,删除数据@Delete("deletefromt_carwhereid=#{id}")intdeleteById(Longid);}

二兄弟之二CarMapperTest,用来测试

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;publicclassCarMapperTest{@TestpublicvoidtestDeleteById(){SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);intcount=mapper.deleteById(40L);System.out.println(count);sqlSession.commit();sqlSession.close();}}

执行结果:

MyBatis注解式开发映射语句怎么使用

3. @Update注解

二兄弟之一CarMapper接口,用来编写方法

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.Insert;publicinterfaceCarMapper{//使用注解式开发,更新数据@Update("updatet_carsetcar_num=#{carNum},brand=#{brand},guide_price=#{guidePrice},produce_time=#{produceTime},car_type=#{carType}whereid=#{id}")intupdate(Carcar);}

二兄弟之二CarMapperTest,用来测试

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;publicclassCarMapperTest{@TestpublicvoidtestUpdate(){SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);//创建Car对象,根据id进行更新Carcar=newCar(34L,"666","丰田霸道",32.0,"2023-1-9","燃油车");intcount=mapper.update(car);System.out.println(count);sqlSession.commit();sqlSession.close();}}

执行结果:

MyBatis注解式开发映射语句怎么使用

4. @Select注解

二兄弟之一CarMapper接口,用来编写方法

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.Insert;publicinterfaceCarMapper{//使用注解式开发,查询数据@Select("select*fromt_carwhereid=#{id}")CarselectById(Longid);}

二兄弟之二CarMapperTest,用来测试

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;publicclassCarMapperTest{@TestpublicvoidtestSelectById(){SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);Carcar=mapper.selectById(41L);System.out.println(car);sqlSession.close();}}

执行结果:

MyBatis注解式开发映射语句怎么使用

5. @Results注解

我们知道数据库表中的字段和pojo类的属性名有的是不一样的,我们之所以能够完整的查出数据,是因为在核心配置文件mybatis-config.xml当中配置了:启用驼峰命名⾃动映射

<!--启⽤驼峰命名⾃动映射--><settings><settingname="mapUnderscoreToCamelCase"value="true"/></settings>

如果我们不启用,不对应的字段就是null,查询的数据如下:

MyBatis注解式开发映射语句怎么使用

那还有什么办法呢?还可以使用@Results注解!

注:从这里也能看出,使用注解的方式开发,对于简单点的SQL还行,对于稍微复杂的查询语句就太麻烦了!

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.*;publicinterfaceCarMapper{//使用注解式开发,查询数据@Select("select*fromt_carwhereid=#{id}")@Results({@Result(property="id",column="id"),@Result(property="carNum",column="car_num"),@Result(property="brand",column="brand"),@Result(property="guidePrice",column="guide_price"),@Result(property="produceTime",column="produce_time"),@Result(property="carType",column="car_type"),})CarselectById(Longid);}

这样计算我们不启用驼峰命名⾃动映射,也能正常查询数据

MyBatis注解式开发映射语句怎么使用

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:MyBatis注解式开发映射语句怎么使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:SQL宽字节注入是什么下一篇:

14 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18