前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot|springboot以注解方式集成mybatis

springboot|springboot以注解方式集成mybatis

作者头像
微笑的小小刀
发布2019-12-03 12:58:44
5560
发布2019-12-03 12:58:44
举报
文章被收录于专栏:java技术大本营java技术大本营

本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~ https://www.javastudy.cloud

springboot集成mybatis

主要有以下几大步骤

  1. 引入mybatis相关依赖
  2. 编写面向java的mapper接口文件
  3. 编写sql的provider文件(mybatis有两种方式去维护sql,一种是xml的方式,一种是注解+provider的方式,本DEMO以provider的方式为主)

引入mybatis相关依赖

这一步在上文中,我们已经引过了,gradle依赖如下:

implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
runtimeOnly 'mysql:mysql-connector-java'

配置数据库

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接口文件

代码如下所示:

/**
 * 注意两个注解, @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类

代码如下:

/**
 * @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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • springboot集成mybatis
    • 引入mybatis相关依赖
      • 配置数据库
        • 编写面向java的mapper接口文件
          • 测试的Controller类
          • DEMO总评
          • DEMO下载
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档