MyBatis --- 配置步骤

本文并非具体的细节,而是主要的配置步骤

概述

         MyBatis 是半自动的ORM 框架,在MyBatis 整合 Spring Boot 的时候步骤比较繁琐,所以写下此篇纪录一下步骤。

         使用 MyBatis 框架需要了解 Entity, Dao, Mapper ,Service 这几个包的作用。例如一下几个类 :

         Entity 包下的某个bean

public class GoodCategory implements Serializable {
    private Integer id;

    private String name;

    private static final long serialVersionUID = 1L;

    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();
    }

    @Override
    public String toString() {
        return "GoodCategory{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

      Dao

public interface GoodCategoryMapper {
    long countByExample(GoodCategoryExample example);

    int deleteByExample(GoodCategoryExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(GoodCategory record);

    int insertSelective(GoodCategory record);

    List<GoodCategory> selectByExample(GoodCategoryExample example);

    GoodCategory selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") GoodCategory record, @Param("example") GoodCategoryExample example);

    int updateByExample(@Param("record") GoodCategory record, @Param("example") GoodCategoryExample example);

    int updateByPrimaryKeySelective(GoodCategory record);

    int updateByPrimaryKey(GoodCategory record);
}

      Mapper

<?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.vb.seckillserver.dao.good.GoodCategoryMapper">
  <resultMap id="BaseResultMap" type="GoodCategory">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="CHAR" property="name" />
  </resultMap>
  ...
  ... 
</mapper>

     Service

public interface GoodService {
    List<GoodCategory> getAllGoodCatory();
    List<ProductBrank> getAllGoodBrand();
    List<GoodStore> getAllGoodStore();
    List<GoodType> getAllGoodType();
    List<GoodBean> getGoodProSkuByCateId(int categoryId);
    List<GoodBean> getGoodProSkuByBrandId(int brandId);
    boolean createProduct(GoodProduct product);
}

      生成 Dao,Entity 和 Map 文件可以使用MyBatis Generator 工具生成,步骤参见该篇文章

步骤

依赖

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

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

属性配置

       mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!--使用jdbc的getGeneratekeys获取自增主键值-->
        <setting name="useGeneratedKeys" value="true"/>


        <!--使用列别名替换列名  默认值为true
        select name as title(实体中的属性名是title) form table;
        开启后mybatis会自动帮我们把表中name的值赋到对应实体的title属性中
        -->
        <setting name="useColumnLabel" value="true"/>

        <!--开启驼峰命名转换  例如: Table field:create_time 到 Entity(createTime)-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--懒加载,为了解决多表连接问题,当一个类(bean)嵌套一个类的情况时,解决N+1 问题-->
        <!--<setting name="lazyLoadingEnabled" value="true"/>-->
        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
    </settings>

</configuration>

       application.properties 里面配置,指定map文件位置和其他属性.

扫描二维码关注公众号,回复: 5804889 查看本文章
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/seckill?useUnicode=true&characterEncoding=utf8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=12345678

mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:/mapper/**/*.xml
mybatis.type-aliases-package=com.vb.seckillserver.entity

      Application 文件上注解

@SpringBootApplication
@MapperScan("com.vb.seckillserver.dao")
public class SeckillServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(SeckillServerApplication.class, args);
	}

}

编写测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class GoodServiceImplTest {

    @Autowired
    private GoodService mGoodService;


    @Test
    public void getAllGoodCatory() {
        List<GoodCategory> allGoodCatory = mGoodService.getAllGoodCatory();
        for (GoodCategory category : allGoodCatory) {
            System.out.println("xyz ;"+category.getName());
        }
    }
}

补充

  • map文件中,namespace 需要指定全限定文件名,而要是有指定Entity 缩写简称,resultMap 中 type 名字只需要类名即可

参考资料

猜你喜欢

转载自www.cnblogs.com/Benjious/p/10667821.html
今日推荐