SpringBoot整合Mybatis/Mybatisplus

SpringBoot整合Mybatis
1.导入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
             <!--引入mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <!--引入druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.19</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <!--热部署依赖 devtools-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <!--optiional:该依赖是否可以传递 true 不能传递-->
            <!--热部署
            1.导入 依赖
            2.开启自动配置
            build ==> automotic
            Registry ctrl+alt+shift+/
            -->
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.书写配置(数据库、mapper.xml)

server:
  port: 8089
  servlet:
    context-path: /springbootmybatis
#整合mybatis相关配置
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver #mysql5.x驱动版本
    url: jdbc:mysql://120.77.216.183:3306/bootssm?characterEncoding=UTF-8
    username: root
    password: root123
mybatis:
  mapper-locations: classpath:com/example/mapper/*.xml #指定mapper配置文件位置
  type-aliases-package: com.example.entity

#配置日志
logging:
  level:
    root: info  #全局日志为debug
    com.example.dao: debug #指定包的日志级别
  file:
    name: run.log #指定生成日志文件名称
    path: ./ #将日志文件生成到当前目录中

3.写接口,写接口Mapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserDao">
    <!--查询所有-->
    <select id="findAll" resultType="user">
        select id,name,birthday,salary from user
    </select>
    <!--添加用户 -->
    <insert id="save" parameterType="user" useGeneratedKeys="true" keyProperty="id">
        insert into user values(#{id},#{name},#{birthday},#{salary})
    </insert>
</mapper>

注:@MapperScan(“com.example.mapper”)//修饰范围: 用在类上作用:用来扫描dao接口所在包同时将所有dao接口在工厂中创建对象
Mybatisplus常用注解
/*
SpringBoot整合Mybatis-plus
1.导入依赖

 <!--mybatisplus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>
        <!--引入druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.19</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

2.写实体类、mapper 、service

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("user")
@EqualsAndHashCode(callSuper = false)
public class User extends Model<User> {
    @TableId
    //主键
    private Long id;
    //姓名
    private String name;
    @TableField(exist = false)
//    transient 不参与序列化
    //真实姓名
    private String realName;
    //年龄
    private Integer age;
    //邮箱
    private String email;
    //直属上级
    private Long managerId;
    //创建时间
    private LocalDateTime createTime;


}
/*
SSM传统编程模式
接口中写抽象方法
XML或注解写SQL
Service中调用接口
Controller中调用
AR模式
通用Mapper
 */

mapper接口

public interface UserMapper extends BaseMapper<User> {
//    自定义Sql
    @Select("select * from user ${ew.customSqlSegment}")
    List<User> selectAll(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

    IPage<User> selectUserPage(Page<User> page, @Param(Constants.WRAPPER)Wrapper<User>  wrapper);
}

service

public interface UserService extends IService<User> {

}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    List<User> selectAll(Wrapper<User> wrapper){
        return this.baseMapper.selectAll(wrapper);
    }

}

3、配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectAll" resultType="com.example.entity.User">
        select * from user ${ew.customSqlSegment}
    </select>

</mapper>

application.propertis中注明

mybatis-plus.mapper-locations=
mybatis-plus.type-aliases-package=

1.常用注解
@TableName(“user”)
@TableId 设置主键映射,value映射主键字段名,type设置主键类型,主键的生成策略
AUTO(0)数据库自增 NONE(1)Mapset主键,雪花算法实现
INPUT (2)需要开发者手动赋值 否则默认自增
ASSIGN_ID(3)MP分配ID ASSIGN_UUID(4)分配UUID 要求主键为String类型
2.TableFiled(value="")映射非主键字段,value映射字段名
TableField(exist = false);
3.exist 表示是否数据库字段false,如果实体类中成员变量在数据库中没有对应的字段
select = false;表示是否查询该字段
fill 表示是否自动填充,将对象存入数据库中的时候,由mybatisplus 自动给某些字段赋值 create
mybatis-plus文档
https://www.javadoc.io/static/com.baomidou/mybatis-plus/1.3.10/overview-summary.html
Mapper层可继承的底层接口
在这里插入图片描述
服务层可以继承的底层接口
在这里插入图片描述
注意:
可以通过导入xml文件整合

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
			SpringContextUtil springContextUtil = new SpringContextUtil();
            springContextUtil.setApplicationContext(context);
			context.start();


获取springboot中IOC容器

@Component
public class SpringContextUtil implements ApplicationContextAware {

         private static ApplicationContext applicationContext; // Spring应用上下文环境

         /*
          * 实现了ApplicationContextAware 接口,必须实现该方法;
          *通过传递applicationContext参数初始化成员变量applicationContext
          */
         public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
               SpringContextUtil.applicationContext = applicationContext;
         }
         public static ApplicationContext getApplicationContext() {
                return applicationContext;
         }
          @SuppressWarnings("unchecked")
          public static <T> T getBean(String name) throws BeansException {
                     return (T) applicationContext.getBean(name);
           }
}

开发应用

public interface CouponActivityMapper extends AutoMapper<CouponActivity, String> {
    /**
     * 查询指定时间范围内的活动
     *
     * @param map 时间商户编码
     * @return CouponActivity
     */
    CouponActivity getCouponActivityByDate(Map<String, String> map);
    /**
     * 查询优惠券活动总数
     */
    Integer getActivityCounts(@Param("qm") CouponActivityVo qm);
    /**
     * 分页查询优惠券活动列表
     */
    List<CouponActivity> queryList(@Param("qm") CouponActivityVo qm, @Param("offset") int offset, @Param("limit") int limit);
}
public interface ICouponActivityService extends ISuperService<CouponActivity, String>{}
public class CouponActivityServiceImpl extends SuperServiceImpl<CouponActivityMapper, CouponActivity, String>
        implements ICouponActivityService {
        private List<CouponActivity> getActivityListByTimeRange(String storeUuid, String activityType, String beginTime, String endTime,
            String needExpired, List<String> notInUuids) {
        CouponActivityVo qm = new CouponActivityVo();
        qm.setStoreUuid(storeUuid);
        qm.setActivityType(activityType);
        qm.setNeedExpired(needExpired);
        qm.setBeginTime(beginTime);
        qm.setEndTime(endTime);
        qm.setNotInUuids(notInUuids);
        return this.baseMapper.queryList(qm, 0, 0);
    }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值