注解类型是大驼峰java_详解spring boot mybatis全注解化

本文重点给大家介绍spring boot mybatis 注解化的实例代码,具体内容大家参考下本文:

pom.xml

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.0

com.github.pagehelper

pagehelper-spring-boot-starter

1.1.1

基本sql操作

spring boot已经自动实现了mybatis所有配置,直接写dao接口即可

@mapper

public interface mybatisdao {

@select("select * from user where id = #{id}")

public list findbyid(user param);

@mapper:声明一个mybatis的dao接口,会被spring boot扫描到

@select:声明一个查询方法,相应的增删改使用@insert @delete@update

list:返回集合。如果只返回一个结果,返回值是user。如果是增删改方法返回值是int

user param:传参,#{id}就是param对象的id值

扫描mapper

@mapperscan("hello.dao")

在配置类上添加以上注解,可以扫描dao包中的所有接口,替代在每个dao中写@mapper注解,不过这样会提高耦合度。而@mapper可以与dao自成一体,与@controller、@service遥相呼应,整体结构更优雅

驼峰命名

在properties中添加以下配置,在执行查询后,可以将数据库的nn_nn格式字段,在java结果集对象中自动转换成驼峰命名参数

mybatis.configuration.mapunderscoretocamelcase=true

结果映射@results

如果结果集不是java对象而是map,map中的列名会和数据库中的nn_nn一样,是不会自动驼峰转换的。可以使用@result来指明结果映射,同样也适用java对象

@results({

@result(property="nnnn",column="nn_nn")

})

@select("select * from user")

public list findall();

使用list不用去维护pojo,适于用数据库字段不确定或经常变化的场景。但是程序的可读性、可维护性不如list

可复用的@results

声明时给id赋值为user

@results(id="user",value={

@result(property="nnnn",column="nn_nn")

})

在其他 方法中,重复使用id为user的结果映射

@resultmap("user")

打印sql日志到控制台

在application.properties中添加以下配置

logging.level.你的包名.mybatis接口包=debug

执行sql时,会在控制台打印sql日志

第一行:==>左边是执行sql的接口及其方法,右边是执行语句

第二行:传参数1,string类型

第三行:查到一行数据

分页

首先要在pom.xml中引入文章开头的分页插件,分页逻辑写在service层。

@service

@transactional

public class helloserviceimpl {

@autowired

mybatisdao mybatisdao;

public void find(){

//分页插件: 查询第1页,每页10行

page page =pagehelper.startpage(1, 10);

mybatisdao.findall();

//数据表的总行数

page.gettotal();

//分页查询结果的总行数

page.size();

//第一个user对象,参考list,序号0是第一个元素,依此类推

page.get(0);

}

执行原理:pagehelper.startpage会拦截下一个sql,也就是mybatisdao.findall()的sql。并且根据当前数据库的语法,把这个sql改造成一个高性能的分页sql,同时还会查询该表的总行数,具体可以看sql日志。

pagehelper.startpage和mybatisdao.findall()最好紧跟在一起,中间不要有别的逻辑,否则可能出bug。

page page:相当于一个list集合,findall()方法查询完成后,会给page对象的相关参数赋值

回传id

假设数据库表的id主键是自动增长的,现在添加一条数据,想要得到这条数据自动增长的id,方法如下

dao层

usegeneratedkeys=true:获取数据库生成的主键

keyproperty="id":把主键值存入user param对象的id属性

@insert("insert into user(name) values(#{name})")

@options(usegeneratedkeys=true,keyproperty="id")

public int add(user param);

service层

user user = new user();

user.setname("tom");

mybatisdao.add(user);

system.out.println("回传id值:"+user.getid());

控制台

存储过程

这是一个mysql存储过程,传入一个id值,根据这个id查询出name值并且做为传出参数

delimiter $$

create procedure `hello`(in id_in varchar(10),out name_out varchar(10))

begin

select name into name_out from user where id=id_in;

end$$

delimiter ;

dao层

mode=in:传入参数,就是user.id

mode=out:传出参数,就是user.name

statementtype.callable:说明这是一个存储过程

@select("call hello(#{id,mode=in,jdbctype=varchar},#{name,mode=out,jdbctype=varchar})")

@options(statementtype= statementtype.callable )

public void call(user user);

service层

public void call(){

user user = new user();

user.setid("14");

mybatisdao.call(user);

system.out.println(user.getname());

执行结果

b28c148218bc6f0efc71912f7566d71b.png

总结

以上所述是小编给大家介绍的spring boot mybatis全注解化,希望对大家有所帮助

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值