MyBatis注解式开发映射语句怎么使用
导读:本文共4016字符,通常情况下阅读需要13分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 前言MyBatis中也提供了注解式开发⽅式,采⽤注解可以减少Sql映射⽂件的配置。 当然,使⽤注解式开发的话,sql语句是写在java程序中的,这种⽅式也会给sql语句的维护带来成本。使⽤注解编写复杂的SQL是这样的:@Update("<script>updatetable_namesetgrade='三年级'”+&quo... ...
目录
(为您整理了一些要点),点击可以直达。前言
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文件就不需要了!
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();}}
执行结果:
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();}}
执行结果:
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();}}
执行结果:
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();}}
执行结果:
5. @Results注解
我们知道数据库表中的字段和pojo类的属性名有的是不一样的,我们之所以能够完整的查出数据,是因为在核心配置文件mybatis-config.xml当中配置了:启用驼峰命名⾃动映射
<!--启⽤驼峰命名⾃动映射--><settings><settingname="mapUnderscoreToCamelCase"value="true"/></settings>
如果我们不启用,不对应的字段就是null,查询的数据如下:
那还有什么办法呢?还可以使用@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);}
这样计算我们不启用驼峰命名⾃动映射,也能正常查询数据
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
MyBatis注解式开发映射语句怎么使用的详细内容,希望对您有所帮助,信息来源于网络。