Spring Boot整合MyBatis调用数据库

写博客有时候需要一点小情调,以后就每次以应景的诗开始吧。
                        泊秦淮 杜牧
                    烟笼寒水月笼沙,夜泊秦淮近酒家。
                    商女不知亡国恨,隔江犹唱后庭花。
     在这里插入图片描述

写这篇博客的起因:
  工作中使用mybatis,知道怎么用,但是他是怎么与Spring boot整合使用不太清楚。
  看书上说使用mybatis的时候,需要先使用SqlSessionFactoryBuilder创建一个单例的SqlSessionFactory(数据库线程池),然后使用SqlSessionFactory生产出SqlSession(数据库连接),并且还需要加载Dao层,还需要在MyBatis-Config.xml里面配置映射文件,看起来真是很复杂啊,但是我在Spring boot框架的时候并没有需要如此多的配置。因此我配了一个最小的Spring boot 和Mybatis整合的框架。

  
  注:假如你只需要看如何配置MyBatis,请直接跳到第四点,跳过开始的三点。喜欢看源代码的直接跳过看源代码,git 仓库地址如下:https://github.com/ShuaiChenL/mybatis

一、创建Maven项目
1.创建一个maven项目,使用modules添加两个模块

如下:

    <modules>
        <module>mybatis-test-0323-api</module>
        <module>mybatis-test-0323-impl</module>
    </modules>

2.创建api和impl模块,impl依赖于api
1.) api 和 impl都需要添加一个spring-boot-start-parent,如下

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>

2.)impl模块需要依赖api,

<!-- 依赖api -->
        <dependency>
            <groupId>com.shanghai.uofst</groupId>
            <artifactId>mybatis-test-0323-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
二、创建Spring Boot项目
1.引入spring boot web start依赖
<!-- spring boot 启动文件 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.创建启动类
@SpringBootApplication
@MapperScan("com.shanghai.uofst.dao.course")
public class SpringBootStart {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootStart.class, args);
    }
}

这样最小的Spring boot就创建好了

三、相应逻辑
1.Controller层

@RestController
@RequestMapping("/course")
public class CourseController {
    @Autowired
    private CourseManager courseManager;

    @GetMapping(value = "/findCourseById")
    public String findCourseById(@RequestParam("id") Long id) {
        return courseManager.findCourseById(id);
    }
}
2.Manager层
public interface CourseManager {
    /***
     * 通过id找课程
     * @return
     */
    String findCourseById(Long id);
}
3.manager impl层
@Service("courseManager")
public class CourseManagerImpl implements CourseManager {
    @Autowired
    private CourseDao courseDao;

    @Override
    public String findCourseById(Long id) {
        Course course = courseDao.findCourseById(id);
        return " id : " + course.getId()
                + "\n courseId : " + course.getCourseId()
                + "\n title : " + course.getCourseId()
                + "\n dept_name : " + course.getDeptName()
                + "\n credits : " + course.getCredits();
    }
}
4.dao层
public interface CourseDao {
    /**
     * 根据id查找课程信息
     * @param id
     * @return
     */
    Course findCourseById(@Param("id") Long id);
}
5.Model(在api模块,其他的都在impl模块)
@Data
public class Course extends BaseModel {
    private static final long serialVersionUID = -8035953895041685970L;
    /** 课程id*/
    private String courseId;
    /** 课程名称 */
    private String title;
    /** 院系 */
    private String deptName;
    /** 学分 */
    private String credits;
}

这里的@Data使用的lombok(不用写get、set、toString方法,简洁代码),引入相应的依赖即可:

<!-- lombok依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
        </dependency>
6.映射文件

然后我们再写对应的映射文件CourseMapper-ext.xml

<mapper namespace="com.shanghai.uofst.dao.course.CourseDao">
    <resultMap id="CourseResultExt" type="com.shanghai.uofst.model.Course">
    </resultMap>

    <sql id="CourseColumnsExt">
        id as id,
        course_id as courseId,
        title as title,
        dept_name as deptName,
        credits as credits
    </sql>
    <select id="findCourseById" resultMap="CourseResultExt">
        select <include refid="CourseColumnsExt"/>
        from course
        where id = #{id}
    </select>
</mapper>

是的,那么到现在应该怎么办呢,我们有一个数据库,我们应该怎么才能使我们的Dao层能调通数据库,怎么样才能使mybatis发挥它的作用呢?配置

四、配置相关mybatis文件
1.application文件

使用如下语句:

mybatis.mapper-location : 放映射的地址
mybatis.config-location:放mabatis配置的地址
type-aliases-package:放model的地址

下面展示application.xml里面的配置,上面是数据库的配置信息,下面为mybatis的配置

spring:
  application:
    name: mybatis-test-0323
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cheney
    username: root
    password: password

server:
  port: 2510

mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/**/*.xml
  type-aliases-package: com.shanghai.uofst.model

在这里插入图片描述

2.数据库驱动需要添加依赖(不然会报错)
<!-- 引入数据库Driver依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
3.添加 Mybatis spring boot starter依赖
<!-- 引入Mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
4.启动类添加dao扫描(在这里映射dao层的接口,spring boot很神奇)

@RequestMapping("/course")

@RestController
@RequestMapping("/course")
public class CourseController {
    @Autowired
    private CourseManager courseManager;

    @GetMapping(value = "/findCourseById")
    public String findCourseById(@RequestParam("id") Long id) {
        return courseManager.findCourseById(id);
    }
}

这样就配置完毕,即可使用。这里其实需要注意的是application.yml和@MapperScan两个地方,啰嗦了这么多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 添加MyBatis和Oracle的依赖 在pom.xml文件中添加MyBatis和Oracle的依赖: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.5.2</version> </dependency> <dependency> <groupId>com.oracle.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>18.3.0.0</version> </dependency> ``` 2. 配置数据源 在application.properties文件中配置数据源: ```properties # Oracle 数据库 spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl spring.datasource.username=yourusername spring.datasource.password=yourpassword spring.datasource.driverClassName=com.oracle.jdbc.Driver ``` 3. 配置Mapper接口 创建Mapper接口和Mapper.xml文件,Mapper接口定义需要执行的SQL语句,Mapper.xml文件中包含了SQL语句的具体实现。 4. 配置MyBatis 在application.properties文件中配置MyBatis: ```properties # MyBatis 配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity ``` 5. 编写Controller 编写Controller,调用MyBatis执行SQL语句,并返回结果。 ```java @RestController public class UserController { @Autowired private UserMapper userMapper; @RequestMapping("/getUsers") public List<User> getUsers() { List<User> users = userMapper.getAll(); return users; } } ``` 6. 编写实体类 创建实体类,在实体类中定义数据库表和Java对象的映射关系。 ```java public class User { private Long id; private String name; private Integer age; // getter 和 setter 方法 } ``` 7. 运行程序 启动Spring Boot应用程序,访问http://localhost:8080/getUsers,即可获取数据库中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值