spring boot(7)-mybatis全注解化
来源:互联网 发布:照片移花接木软件下载 编辑:程序博客网 时间:2024/05/22 13:34
关于配置数据库可以参考上一篇文章,这里只讲mybatis
pom.xml
- <!-- 引入mybatis -->
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>1.3.0</version>
- </dependency>
- <!-- mybatis分页插件 -->
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>1.1.1</version>
- </dependency>
基本SQL操作
spring boot已经自动实现了mybatis所有配置,直接写dao接口即可
- @Mapper
- public interface MybatisDao {
- @Select("select * from user where id = #{id}")
- public List<User> findById(User param);
@Mapper:声明一个mybatis的dao接口,会被spring boot扫描到
@Select:声明一个查询方法,相应的增删改使用@Insert @Delete@Update
List<User>:返回集合。如果只返回一个结果,返回值是User。如果是增删改方法返回值是int
User param:传参,#{id}就是param对象的id值
扫描Mapper
- @MapperScan("hello.dao")
驼峰命名
在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<Map> findAll();
可复用的@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<User> 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<User> 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());
执行结果
阅读全文
0 0
- spring boot(7)-mybatis全注解化
- spring boot(7)-mybatis全注解化
- spring boot(7)-mybatis全注解化
- spring boot mybatis 注解sql
- spring boot:配置mybatis以及注解事务
- Spring boot Mybatis 整合(注解版)
- Spring SpringMVC Mybatis 全注解配置
- spring mvc+mybatis+ spring 基于全注解事务配置
- spring + spring mvc + mybatis 整合项目 全注解方式
- Spring Boot中使用MyBatis注解配置详解
- spring boot 整合mybatis 中用注解实现的查询
- spring-boot 注解配置mybatis+druid(新手上路)
- Spring Boot集成MyBatis——注解方式
- Spring Boot中使用MyBatis注解配置详解
- mybatis与spring boot整合 注解 与实例大全
- Spring Boot系列之六 以注解方式整合MyBatis
- Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例
- Spring Boot中使用MyBatis注解配置详解
- 数据科学工具 Jupyter Notebook 教程 in Python
- 简单通讯录的实现
- bzoj2229: [Zjoi2011]最小割
- 又有实锤,Excel与超级表格的三个技巧
- 嚼得菜根做得大事·《菜根谭》·十
- spring boot(7)-mybatis全注解化
- JS&JQuery动态添加select option标签
- 2017 ACM-ICPC亚洲区(南宁赛区)网络赛 F.Frequent Subsets Problem
- 输入一个句子,反转句子中单词的顺序,单词内的字符顺序不变
- vue上传多张图片
- Photon_C#程序和MySql建立起连接_002
- 关于定时器的总结
- Excel中的宏怎么删除如何解决打开或保存表时弹出询问窗口
- Linux Yum命令实例--安装/卸载/更新