springboot集成mybatis——单表简单配置使用

项目结构

1.构建maven项目 pom.xml添加依赖

< dependency >
    < groupId >org.mybatis.spring.boot</ groupId >
    < artifactId >mybatis-spring-boot-starter</ artifactId >
    < version >1.3.1</ version >
</ dependency >
< dependency >
    < groupId >mysql</ groupId >
    < artifactId >mysql-connector-java</ artifactId >
    < scope >runtime</ scope >
</ dependency >

 

2.application.yml配置

 

mybatis:
   type-aliases-package: com.example.mybatis_test.domain
   mapper-locations: classpath:mapper/*.xml
 
spring:
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
     username: root
     password: 123456
server:
   port: 8088

 

  • type-aliases-package :指定包名用来搜素类型别名
  • mapper-locations :指定mapper.xml所在的位置

3.mysql建表

CREATE  TABLE  `addresses` (
     `addr_id`  INT (11)  NOT  NULL  AUTO_INCREMENT,
     `street`  VARCHAR (50)  NOT  NULL ,
     `city`  VARCHAR (50)  NOT  NULL ,
     `state`  VARCHAR (50)  NOT  NULL ,
     `zip`  VARCHAR (10),
     `country`  VARCHAR (50),
     PRIMARY  KEY  (`addr_id`)
);

4.创建实体类

@Data
@Alias( "address" )
public  class  Address implements Serializable{
     private  static  final Long serialVersionUID=1L;
     private  Integer addrId;
     private  String street;
     private  String city;
     private  String state;
     private  String zip;
     private  String country;
 
}


5.编写mapper接口

 在mapper接口上标注@Mapper注解 

或者通过使用@MapperScan指定要扫描的Mapper类的包的路径 

 注入mapper接口时会报找不到bean的警告 但是不影响使用  可以在mapper接口上加@Component消除警告

    @Insert注解来定义一个INSERT映射语句

@Options(useGeneratedKeys = true,keyColumn = "addr_id",keyProperty = "addrId")

 表明addr_id列值将会通过MySQL数据库自动生成。并且生成的值将会被设置到address对象的addrId属性中。 

@Insert( "insert into addresses(street,city,state,country,zip)"  +
         " values(#{street},#{city},#{state},#{country},#{zip})" )
@Options(useGeneratedKeys =  true ,keyColumn =  "addr_id" ,keyProperty =  "addrId" )
int  addAddress(Address address);

 

    @Select注解来定义一个SELECT映射语句。 

    我们可以将查询结果通过别名或者是 @Results注解与Java Bean属性映射起来。     @Results注解和映射器XML配置文件元素<resultMap> 对应。 然而,My Batis3.2.2不能为 @Results注解赋予一个ID。所以,不像<resultMap>元素,我们不应在不同的映射语句中重用 @Results声明。这意味着即使 @Results注解完全相同,我们也需要(在不同的映射接口中)重复 @Results声明。 

@Select ( "select * from addresses where city=#{city}" )
@Results (id =  "addressMap" , value = {
         @Result (id =  true , column =  "addr_id" , property =  "addrId" ),
         @Result (column =  "street" , property =  "street" ),
         @Result (column =  "city" , property =  "city" ),
         @Result (column =  "zip" , property =  "zip" ),
         @Result (column =  "state" , property =  "state" )
 
})
List<Address> findByCity( @Param ( "city" ) String city);
    当两个语句的@Results配置完全相同时,我们可以创建一个映射器Mapper配置文件,然后配置<resultMap>元素,然后使用 @ResultMap注解引用此<resultMap>。在AddressMapper.xml中定义一个ID为AddressMap的<resultMap>。这样就可以实现复用了。

   mapper.xml 

namespace: 对应映射接口

<? xml  version = "1.0"  encoding = "utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "<a href="http://mybatis.org/dtd/mybatis-3-mapper.dtd" "="" style="color: rgb(50, 108, 166); border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 20px !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: auto !important;">http://mybatis.org/dtd/mybatis-3-mapper.dtd">
< mapper  namespace = "com.example.mybatis_test.mapper.AddressMapper" >
     < resultMap  id = "AddressMap"  type = "address" >
         < id  column = "addr_id"  property = "addrId" />
         < result  column = "city"  property = "city" />
         < result  column = "state"  property = "state" />
         < result  column = "street"  property = "street" />
         < result  column = "zip"  property = "zip" />
         < result  column = "country"  property = "country" />
     </ resultMap >
</ mapper >
@Select( "select * from addresses where city=#{city}" )
/*  @Results(id = "addressMap", value = {
           @Result(id = true, column = "addr_id", property = "addrId"),
           @Result(column = "street", property = "street"),
           @Result(column = "city", property = "city"),
           @Result(column = "zip", property = "zip"),
           @Result(column = "state", property = "state")
 
   })*/
@ResultMap( "AddressMap" )
List<Address> findByCity(@Param( "city" ) String city);
 
@Select( "select * from addresses where addr_id=#{id }" )
@ResultMap( "AddressMap" )
Address findAddressById(@Param( "id" ) Integer id);

 

@Update注解来定义一个UPDATE映射语句 

 

@Update( "update addresses set street=#{A.street},city=#{A.city},state=#{A.state},country=#{A.country},zip=#{A.zip} where addr_id=#{addrId}" )
int  updateAddress(@Param( "addrId" ) Integer id,@Param( "A" ) Address address);

@Delete注解来定义一个DELETE映射语句 

@Delete( "delete from addresses where addr_id=#{id}" )
int  removeAddress(@Param( "id" ) Integer id);


6.测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值