本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~ https://www.javastudy.cloud
springboot集成mybatis
主要有以下几大步骤
- 引入mybatis相关依赖
- 编写面向java的mapper接口文件
- 编写sql的provider文件(mybatis有两种方式去维护sql,一种是xml的方式,一种是注解+provider的方式,本DEMO以provider的方式为主)
引入mybatis相关依赖
这一步在上文中,我们已经引过了,gradle依赖如下:
代码语言:javascript
复制
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
runtimeOnly 'mysql:mysql-connector-java'
配置数据库
代码语言:javascript
复制
spring.datasource.url=jdbc:mysql://localhost:33306/javastudy?characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=javastudy
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
编写面向java的mapper接口文件
代码如下所示:
代码语言:javascript
复制
/** * 注意两个注解, @Mapper是代表这个类是Mybatis中的Mapper * 还有@Repositor是代表这个类是spring的bean * @Author https://www.javastudy.cloud * @CreateTime 2019/11/4 **/ @Mapper @Repository public interface TestDAO {
/** * 这里简单的sql直接通过@Select注解来写了 * 稍复杂一点的要通过SelectProvider来写 * @return */ @Select("select * from test") public List<Map> listTests(); /** * 复杂的sql可以通过这种@SelectProvider去指定一个sql维护类 * @param id * @return */ @SelectProvider(type = TestProvider.class) public Map getById(@Param("id") Long id); /** * 注意Provider要实现ProviderMethodResolver这个接口 * 为方便,直接使用了内部类的方式,实际开发中,一般会单独写一个类 */ class TestProvider implements ProviderMethodResolver { /** * sql提供类,方法名一定要和mapper里面的方法名一致 * @param id * @return */ public String getById(@Param("id") Long id){ SQL sql = new SQL(){ { SELECT("*"); FROM("test"); WHERE("id = "+id); } }; return sql.toString(); } }
}
测试的Controller类
代码如下:
代码语言:javascript
复制
/**
@Author https://www.javastudy.cloud
@CreateTime 2019/11/4
**/
@RestController
public class MybatisController {@Autowired
private TestDAO testDAO;/**
- 先注入testDAO,然后就可以直接调用里面的方法了
- @return
*/
@RequestMapping("mybatis/testMybatisByAnnotation")
public String testMybatisByAnnotation(){
List<Map> maps = testDAO.listTests();
return JSON.toJSONString(maps);
}/**
- 注意这里的传参,使用了@PathVariable,直接通过url传参
- 这种传参方式一般适用于RestFul接口,以资源为导向的开发
- 在实际工作中,看团队风格而使用
- @param id
- @return
*/
@RequestMapping("mybatis/testMybatisByProvider/{id}")
public String testMybatisByProvider(@PathVariable Long id){
Map map = testDAO.getById(id);
return JSON.toJSONString(map);
}
}
结果如下:
DEMO总评
与XML方式的mybatis相比,注解方式的mybatis更多的需要把sql维护在java代码中,其中有些直接拼接的地方对于防XSS攻击会弱些,这些需要开发者注意. 少年,加油吧!!
DEMO下载
https://img.hacpai.com/file/2019/11/demospringbootmybatis-37e33b2d.zip