Java知识书屋Java 杂谈Spring-Boot

SpringBoot集成Mybatis(四)

2019-04-03  本文已影响0人  3d0829501918

Mybatis是一款支持复杂的SQL语句,存储过程及高级映射的持久层的框架。使用Mybatis有两种方式,XML和注解。


一、Mybatis注解版

  Mybatis初期使用比较麻烦,需要很多配置文件、实体类、dao层映射、还有很多其他的配置。初期开发使用generator可以根据表结构自动生产实体类、dao层代码,这样是可以减轻一部分开发量;后期mybatis进行大量的优化,现在可以使用注解版本,自动管理dao层和配置文件。
mybatis-spring-boot-starte就是SpringBoot集成Mybatis的jar包,可以完全使用注解,无需配置文件,简单配置轻松上手。

    1、添加pom.xml文件

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

        <!--数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>

    2、配置application.properties

#指定服务端口
server.port=8089

## 数据源配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中。

 在启动类中添加对mapper包扫描@MapperScan或者在每个Mapper类中增加上面添加注解@Mapper,推荐在启动类加注解,这样不用在每个Mapper类加注解。

@SpringBootApplication
@MapperScan("com.example.mybatis.dao")
public class Application {

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

    3、Mapper

public interface UserMapper {

    /**
    * @Description: 查询用户列表
    */
    @Select("SELECT * FROM user")
    @Results({
            @Result(property = "userName",  column = "user_name"),
            @Result(property = "passWord", column = "pass_word"),
            @Result(property = "nickName", column = "nick_name"),
            @Result(property = "regTime", column = "reg_time")
    })
    List<User> getAll();

    /** 
    * @Description: 保存用户信息 
    */ 
    @Insert("INSERT INTO user(user_name,pass_word,email,nick_name,reg_time) VALUES(#{userName}, #{passWord}, #{email},#{nickName},#{regTime})")
    void insert(User user);

    /** 
    * @Description: 修改用户信息 
    */ 
    @Update("UPDATE user SET user_name=#{userName},nick_name=#{nickName} WHERE id =#{id}")
    void update(User user);

    /** 
    * @Description: 删除用户信息 
    */ 
    @Delete("DELETE FROM user WHERE id =#{id}")
    void delete(Long id);
}

@Select是查询类的注解,所有的查询均使用这个
@Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
@Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值
@Update 负责修改,也可以直接传入对象
@delete 负责删除

    4、测试
     启动项目成功后输入查询全部用户的接口。

    5、常见问题


二、Mybatis XML版本

xml版本保持映射文件的老传统,优化主要体现在不需要实现dao的是实现层,而是在映射的xml文件中找到相应的sql语句。

    1、application.properties文件中增加配置

## Mybatis 配置
##注意:对应实体类的路径
mybatis.typeAliasesPackage=com.example.mybatis.bean.User
##注意:一定要对应mapper映射xml文件的所在路径
mybatis.mapperLocations=classpath:mapper/*.xml

    2、Mapper接口和Mapper XML的映射关系


    3、Dao层
public interface UserMapper {

    /**
     *  通过用户id查询User
     **/
    User selectUserByUserId(Long id);

    /**
     * 保存用户信息
     **/
    int createUser(User record);

    /**
     * 删除用户信息
     **/
    int deleteByUserId(Long id);

    /**
     * 修改用户信息
     **/
    int modifyUserByUserId(User record);

}

Dao层现在十分简洁,具体的sql语句都在mapper.xml文件中,具体代码我这里就不贴了。

    4、使用
     新增功能,在url页面的测试。


三、注解和xml如何选择呢?

注解版适合简单快速的模式。
xml版比较适合大型项目,可以灵活的动态生成SQL,方便调整SQL


四、GitHub地址

注解版:
    https://github.com/xiaonongOne/springboot-mybatis-annotation
XML版:
    https://github.com/xiaonongOne/springboot-mybatis-xml


注意啦! 往期文章目录在这里


上一篇 下一篇

猜你喜欢

热点阅读