第10章 集成MyBatis

版权声明:我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动 https://blog.csdn.net/huangwenyi1010/article/details/82829940

10.1 MyBatis介绍

10.1.1 MyBatis概述

MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

10.2 集成MyBatis

10.2.1 引入依赖

在Spring Boot中集成Mybatis,首先需要在pom.xml文件中引入所需的依赖,具体代码如下:

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

10.2.2 添加MyBatis配置

在pom文件添加Mybatis所需的依赖之后,我们需要在application.properties文件中添加如下的配置信息:

### mybatis配置
mybatis.mapper-locations=classpath:/mappers/*Mapper.xml
mybatis.type-aliases-package=com.example.demo.dao

mybatis.mapper-locations:Mapper资源文件存放的路径。
mybatis.type-aliases-package:Dao接口文件存放的目录。

10.2.3 Dao层和Mapper文件开发

application.properties配置添加完成之后,我们需要根据MyBatis配置添加对应的文件夹。首先,我们需要在/src/main/java/com.example.demo.dao目录下新建AyUserDao接口,这样Spring Boot启动时候,就可以根据application.properties配置mybatis.type-aliases-package,找到AyUserDao接口。AyUserDao具体代码如下:

/**
 * 描述:用户DAO
 * @author Ay
 * @date   2017/11/20.
 */
@Mapper
public interface AyUserDao {

    /**
     *  描述:通过用户名和密码查询用户
     * @param name
     * @param password
     */
    AyUser findByNameAndPassword(@Param("name") String name, 
@Param("password") String password);

}

@Mapper:重要注解, MyBatis根据接口定义与Mapper文件中的SQL语句动态创建接口实现。
@Param:注解参数,在Mapper.xml配置文件钟,可以采用#{}的方式对@Param注解括号内的参数进行引用。
findByNameAndPassword:该方法可以通过用户名和密码查询用户。
然后我们在/src/main/resources目录下新建AyUserMapper.xml文件,Spring Boot在项目启动时候,会根据application.properties配置mybatis.mapper-locations找到该文件。AyUserMapper具体代码如下:
<?xml version="1.0" encoding="UTF-8" ?>

    <resultMap id="UserResultMap" type="com.example.demo.model.AyUser">
        <id column="id" property="id" jdbcType="VARCHAR"/>
        <result column="name" property="name" jdbcType="VARCHAR"/>
        <result column="password" property="password" jdbcType="VARCHAR"/>
        <result column="mail" property="mail" jdbcType="VARCHAR"/>
    </resultMap>

   <select id="findByNameAndPassword" resultMap="UserResultMap" parameterType="String">
          select * from ay_user u
        <where>
            u.name = #{name}
            and u.password = #{password}
        </where>
    </select>

</mapper>

< mapper>标签:该标签的namespace属性用于绑定绑定Dao接口的。
< select>标签:用来编写select语句,映射查询语句。select标签有几个重要的属性,比如:resultMap
< resultMap>:映射管理器resultMap,是Mybatis中最强大的工具,描述了如何将数据库查询的结果集映射到Java对象,并管理结果和实体类之间的映射关系。
AyUserDao代码开发完成之后,我们在之前开发好的AyUserService接口类中添加添加接口findByNameAndPassword。具体代码如下:

/**
 * 描述:用户服务层接口
 * @author 阿毅
 * @date   2017/10/14
 */
public interface AyUserService {
         //此处省略代码

    AyUser findByNameAndPassword(String name, String password);

}

然后,我们在AyUserServiceImpl类中实现findByNameAndPassword接口,具体代码如下:

/**
 * 描述:用户服务层实现类
 * @author 阿毅
 * @date   2017/10/14
 */
//@Transactional
@Service
public class AyUserServiceImpl implements AyUserService {

    //此处省略代码

    @Resource
    private AyUserDao ayUserDao;

    @Override
    public AyUser findByNameAndPassword(String name, String password) {
        return ayUserDao.findByNameAndPassword(name, password);
    }
}

10.2.4 测试

代码开发完成之后,我们在MySpringBootApplicationTests类下添加测试方法,具体代码如下:

@Resource
private AyUserService ayUserService;

@Test
public void testMybatis(){
	AyUser ayUser = ayUserService.findByNameAndPassword("阿毅", "123456");
	logger.info(ayUser.getId() + ayUser.getName());

}

执行测试用例,在Intellij IDEA控制台可以看到相应的打印信息。

猜你喜欢

转载自blog.csdn.net/huangwenyi1010/article/details/82829940