Mybatis学习笔记_基础_动态sql语句

最近做的新项目使用的是springboot+mybatis框架的,因为之前都是用的springboot+jpa,mybatis许久未用,因此上手有点生疏,这里做一下总结。

一、项目依赖准备

二、application.yml

三、启动类

四、Mapping.xml

一、项目依赖准备

 

org.springframework.bootspring-boot-starter

org.springframework.bootspring-boot-starter-web

org.mybatis.spring.bootmybatis-spring-boot-starter1.3.0


org.springframework.bootspring-boot-starter-jdbc

mysqlmysql-connector-java

hana库<-->
com.sap.cloud.db.jdbcngdbc2.4.64


com.oracleojdbc611.2.0.4

这些是项目搭建要用到的一些依赖,springboot项目基础配置了,这里注意一个数据库连接用的是springboot的jdbc而不是alibaba的druid,之后如果用PageHelper插件话会有用到!

二、application.yml

spring:# 用户配置开发(dev)profiles:
#    active: prod
#   active:devactive: testhttp:encoding:charset: utf-8enabled: trueforce: true

然后在application-test.yml的配置为:

server:###本地测试用#注意:后面必须有空格tomcat:uri-encoding: UTF-8#项目名/端口servlet:context-path: /demoport: 8085spring:application:name: demodatasource:
# mysql配置
#    driver-class-name: com.mysql.jdbc.Driver
#    url:  jdbc:mysql://127.0.0.0:3306/dm?useUnicode=true&characterEncoding=UTF8&useSSL=false
#    username: root
#    password: rootdbcp2:max-idle: 300max-wait-millis: 50000min-idle: 6initial-size: 10
#这里配置连接的数据库类型,还可以做成根据不同database-id从而达到实现多数据库动态切换的配置type: oracle.jdbc.pool.OracleDataSource
#oracle 数据库的配置driver-class-name: oracle.jdbc.driver.OracleDriverurl: jdbc:oracle:thin:@127.0.0.0:1521:orclusername: rootpassword: ****#mybatis扫描mapping文件路径的配置
mybatis:mapper-locations: classpath:mapping/*.xmltype-aliases-package: com.demo.common.entityconfiguration:call-setters-on-nulls: true

 三、启动类

在SpringbootApplication里的配置为:

/*** demo 服务启动类*/
@SpringBootApplication
@MapperScan(basePackages ={"com.demo.common.mapper"})
@RestController
public class DemoServiceApplication {public static void main(String[] args) {ConfigurableApplicationContext ctx = SpringApplication.run(DemoServiceApplication.class, args);String project = ctx.getEnvironment().getProperty("server.servlet.context-path");String port = ctx.getEnvironment().getProperty("server.port");System.out.println("服务启动完成! http://localhost:" + port + project);}//application文件配置格式转换@Beanpublic static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();c.setIgnoreUnresolvablePlaceholders(true);return c;}
}

其中, @MapperScan这个注解就是扫描mybatis的mapping.xml文件。

四、Mapping映射

这里是dao层实现,首先创建mapper类

public interface ProcessTotalMapper {List> getProcessTotalByMonth(Map map)throws DimpException;List> getLimitScoreByMonth(Map map)throws DimpException;List> getTooltipData(Map map)throws DimpException;List> findByPaging(Map param)throws DimpException;
}

然后创建mapping.xml



namespace就是mapper.java所在的项目路径,select元素中的id就是mapper中对应的方法名,parameterType是 参数类型,resultType是返回结果类型,可以是基本数据类型,也可以是自定义的实体类型,自定义实体类型方式如下:

用resultMap元素实现查询结果和实体类列名对应,type就是要返回的实体类,column是数据库中的列名,property是实体类的字段名,在方法中使用时,返回结果要用resultMap属性,属性值就是resultMap的id。

 

五、动态sql的实现

在项目需求中,遇到数据库中数据列不确定的问题,但是查询的时候如果使用select * 进行全字段查询又很不效率,所以后端通过外部配置xml文件实现动态列名的查询,那么在mybatis里要动态查询,则要通过参数形式为STATEMENT实现:

 

需要注意的是,使用statementType的话,mybatis里的sql语句为 '非预编译';

1.使用    statementType="STATEMENT",需要把 #{}改成 ${};

2.传入的参数注意在java中拼接的时候加上 "'" 引号;

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部