Spring Boot实战|整合mybatis

《JavaEE开发的颠覆者: Spring Boot实战》系列读书笔记

Spring Boot整合Mybatis


Mybatis 初期使用比较麻烦,需要各种配置文件、实体类、Dao 层映射关联、还有一些其它配置。当然 Mybatis 也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和 Dao 层代码,可以减轻一部分开发量。
后来也可以使用注解了,自动管理 Dao 层和配置文件等,mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以简单配置轻松上手。

开始使用

引入依赖

  • 在pom文件引入mybatis-spring-boot-starter的依赖:

    <dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>2.0.0</version>
    		</dependency>
    

    引入数据库连接依赖:

    <dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>8.0.16</version>
    		</dependency>
    

引入数据源

  • application.properties配置文件中引入数据源:

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/XX?\
      useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
    spring.datasource.username=XX
    spring.datasource.password=XX
    mybatis.configuration.map-underscore-to-camel-case=true
    server.port=8080
    

    springboot 会自动加载 spring.datasource.* 相关配置,数据源就会自动注入到sqlSessionFactory 中,sqlSessionFactory 会自动注入到 Mapper 中,这样就可以访问数据了

创建数据库表

  • 在这里插入图片描述

    创建实体:

    public class CityInfo {
     
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
        private String city;
    
        public CityInfo(int id, String city) {
            this.id = id;
            this.city = city;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getCity() {
            return city;
        }
    
        public void setCity(String city) {
            this.city = city;
        }
    }
    

dao层

  • 数据访问,主要对sql进行操作。

    public interface CityMapper {
    	
    	@Select("SELECT * FROM city")
    	List<CityInfo> getAll();
    	
    	@Select("SELECT * FROM city WHERE id = #{id}")
    	CityInfo getOne(int id);
    
    	@Insert("INSERT INTO city(city) VALUES(#{city})")
    	void insert(CityInfo cityInfo);
    
    	@Update("UPDATE city SET city=#{city} WHERE id =#{id}")
    	void update(CityInfo cityInfo);
    
    	@Delete("DELETE FROM city WHERE id =#{id}")
    	void delete(int id);
    
    }
    

controller层

  • 使用的时候把Mapper 层当作普通的类注入进入就可以了

        /**
         * mybatis 测试增删改查
         */
        @RequestMapping(value = "Insert", method = RequestMethod.GET)
        public Result<CityInfo> mybatisInsert() throws Exception {
            CityInfo cityInfo = new CityInfo(1,"911");
            cityMapper.insert(cityInfo);
            return new Result<CityInfo>(cityInfo);
        }
        @RequestMapping(value = "Query", method = RequestMethod.GET)
        public Result<List<CityInfo>> mybatisQuery() throws Exception {
            List<CityInfo> cityInfos = cityMapper.getAll();
            return new Result<List<CityInfo>>(cityInfos);
        }
        @RequestMapping(value = "Update", method = RequestMethod.GET)
        public Result<CityInfo> mybatisUpdate() throws Exception {
            CityInfo cityInfo = cityMapper.getOne(3);
            System.out.println(cityInfo.toString());
            cityInfo.setCity("深圳");
            cityMapper.update(cityInfo);
            return new Result<CityInfo>(cityInfo);
        }
    

    注意在启动类中添加对 mapper 包扫描@MapperScan(“路径”)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值