Spring Boot 集成mybatis(gradle)

集成mybatis

[toc]
简书不支持目录,截图。


image.png

mybatis 注解方式

  • 第一步:引入依赖包: build.gradle

    buildscript {
        ext {
            springBootVersion = '1.5.4.RELEASE'
        }
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        }
    }
    
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'org.springframework.boot'
    
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile('org.springframework.boot:spring-boot-starter')
        testCompile('org.springframework.boot:spring-boot-starter-test')
        
        compile 'mysql:mysql-connector-java'
        
        //配置mybatis 数据源
        compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0")
        testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0')
        
        //使用 Controller 的时候需要引入 web 包
        compile('org.springframework.boot:spring-boot-starter-web')
    }
    
  • 第二步:数据库连接配置 application.yml

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
        username: root
        password: root
    
  • 第三步:增加包扫描 Mapper 文件,也可以在 xml 文件中配置,以下使用注解。

    @SpringBootApplication
    @MapperScan("com.example.demo.dao.mapper")
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    
  • 第四步:写 Mapper 接口,使用 mybatis 的注解

    public interface UserMapper {
    
        @Select("select * from person where id = #{id}")
        Person findByID(Integer id);
    
        //返回的Integer值是变化的行数,@Options()会填充到实体 person 中。
        @Insert("insert into person(name, age) values(#{name}, #{age})")
        @Options(useGeneratedKeys = true, keyProperty = "id")
        Integer addPerson(Person person);
    
    //    @Insert("insert into person(name, age) values(#{name}, #{age})")
    //    Integer addPerson(@Param("name") String name, @Param("age") Integer age);
    
        @Update("update person set name = #{name}, age = #{age} where id = #{id}")
        Integer updatePerson(@Param("name") String name, @Param("age") Integer age, @Param("id") int id);
    
        @Delete("delete from person where id = #{id}")
        Integer deletePerson(Integer id);
    
        @Select("select * from person")
        List<Person> findAllPage();
    
    }
    



mybatis xml方式

  • 第一步:引入依赖包: build.gradle

    buildscript {
        ext {
            springBootVersion = '1.5.4.RELEASE'
        }
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        }
    }
    
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'org.springframework.boot'
    
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile('org.springframework.boot:spring-boot-starter')
        testCompile('org.springframework.boot:spring-boot-starter-test')
        
        compile 'mysql:mysql-connector-java'
        
        //配置mybatis 数据源
        compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0")
        testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0')
        
        //使用 Controller 的时候需要引入 web 包
        compile('org.springframework.boot:spring-boot-starter-web')
    }
    
  • 第二步:数据库连接配置 application.yml

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
        username: root
        password: root
        
    mybatis:
        type-aliases-package: org.larry.springboot.entity
        mapper-locations: classpath:mapper/**/*.xml
        check-config-location: true
    
  • 第三步:配置包扫描 Mapper 文件 Application.java

    @SpringBootApplication
    @MapperScan("com.example.demo.mapper")
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    
  • 第四步:测试代码

    创建model 和 Mapper 文件用于测试,但是可以使用 generator 自动生成。

    public class User {
        private Integer id;
    
        private String name;
    
        public User(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public User() {
            super();
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name == null ? null : name.trim();
        }
    }
    
    public interface UserMapper {
        long countByExample(UserExample example);
    
        int deleteByExample(UserExample example);
    
        int deleteByPrimaryKey(Integer id);
    
        int insert(User record);
    
        int insertSelective(User record);
    
        List<User> selectByExample(UserExample example);
    
        User selectByPrimaryKey(Integer id);
    
        int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);
    
        int updateByExample(@Param("record") User record, @Param("example") UserExample example);
    
        int updateByPrimaryKeySelective(User record);
    
        int updateByPrimaryKey(User record);
    
        @Select("select * from user")
        List<User> findAll();
    }
    
    @RestController
    public class UserContorller {
    
        @Autowired
        private UserMapper userMapper;
    
        @RequestMapping("/insert")
        public User insertUser() {
            User user = new User(null, "inke");
            userMapper.insert(user);
            return user;
        }
    
        @RequestMapping("/findAll")
        public List<User> findAll() {
            return userMapper.findAll();
        }
    }
    



分页查询 pagehelper

  • 第一步:引入依赖包: build.gradle

    dependencies {
        compile('org.springframework.boot:spring-boot-starter')
        testCompile('org.springframework.boot:spring-boot-starter-test')
        compile 'org.springframework.boot:spring-boot-devtools'
     
        compile 'mysql:mysql-connector-java'
        
        //配置mybatis 数据源
        compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0")
        testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0')
        //pagehelper
        compile("com.github.pagehelper:pagehelper-spring-boot-starter:1.1.1")
        //mapper 使用 xml 的 mybatis 方式,需要引入下面的包,不然 dev-tools 会报错
        //compile("tk.mybatis:mapper-spring-boot-starter:1.1.1")
    }
    
  • 第二步:数据库连接配置 application.yml

    server:
      port: 9010
    
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
        username: root
        password: root
    
    mybatis:
        type-aliases-package: tk.mybatis.springboot.model
        mapper-locations: classpath:mapper/*.xml
    
    #mapper:
    #    mappers:
    #        - tk.mybatis.springboot.util.MyMapper
    #    not-empty: false
    #    identity: MYSQL
    
    pagehelper:
        helperDialect: mysql
        reasonable: true
        supportMethodsArguments: true
        params: count=countSql
    
  • 第三步:测试代码

    @Test
    public void testFindAllPage() {
       // startPage(pageNum, pageSize);
       PageHelper.startPage(1, 3);
       List<Person> persons = userMapper.findAllPage();
       System.out.println("findAllPage:" + persons);
       PageInfo<Person> pageInfo = new PageInfo<>(persons);
       System.out.println("pageInfo:" + pageInfo);
       //获取返回的数据
       List<Person> lists = pageInfo.getList();
       for (Person person : lists) {
           System.out.println("person:" + person);
       }
    }
    



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容