spring boot + mybatis

spring boot整合mybatis

我这里使用maven创建项目,所以我的jar都是通过maven导入。

先添加mybatis的maven坐标

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

然后创建mybatis的spring配置xml

通过mybatis链接数据库,第一步是要配置datasource。

DataSource类是在javax.sql包下的一个接口,我们可以看看这个类的实现类有那些(后面我在讲解如何接入c3p0链接池,这里我先简单使用一个apache提供的一个实现类)

实现类有很多,这里我先采用apache提供的一个实现类

然后我们在mybatis的配置文件中将这个类进行注入

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource">
</bean>

这样就注入了,然后配置数据库链接的属性,比如数据库的链接、用户名、密码等信息

在配置链接信息时,我们需要根据不同的数据库导入不同的jar,比如我这里要链接mysql,就需要导入mysql的jar。

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.46</version>
 </dependency>

导入了相应的数据库工具jar后可以对上面的datasource进行一个配置参数

在看配置参数时,我们可以先简单看下apache的datasource实现类

他继承了datasourceproxy,而这个类里面有很多的set方法,这些方法也就说明可以对数据的链接设置很多的属性

我们初涉的话只需要设置上图我所圈的这些参数,DriverClassName是数据库驱动类的类名(包括包名),password是数据库链接的密码,url是数据库链接的url,username是数据库链接的用户

然后设置set方法对应的是配置文件的property标签,如下:

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>

其中url参数的值我是用${jdbc.url}这是spring获取properits配置文件中的值,${}这个符号代表获取properits值,中间的内容是properits配置文件中参数的key

然后我们driverClassName的值是com.mysql.jdbc.Driver这个是指com.mysql.jdbc包下的Driver类,这个类是mysql提供的一个驱动类,是在mysql的jar包内的

到这里我们的dataSource就简单配置完成了(数据库链接池是一样的配置方式,后面在说)

注入完datasource之后,我们开始对spring接入mybatis,在接入之前先看看官网http://www.mybatis.org/spring/zh/getting-started.html

根据官网,我们需要注入sqlSessionFactoryBean,其中可以设置的属性如下

其中我们需要设置的是datasource(数据库链接)和mapperlocations(mapper的xml配置路径),如下代码

    <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

我指定mapper的xml路径是资源路径下面mapper文件夹下的所有mapper

然后我们需要将配置文件引入到springboot中,可以通过ImportResource指定注入spring的配置文件

该注解可以配置在configuration注解的类上或者是springboot的启动类上

@ImportResource("classpath:mybatis.xml")

之后配置mybatis的mapper;先定义mapper接口再配置xml,可以这么理解,mapper的接口是提供数据库相关表操作的方法,mapper的xml是该接口方法的实现。

我简单写个TestMapper接口,定义一个test方法

@Mapper
public interface TestMapper {
    int test();
}

需要通过Mapper注解,因为这个接口没有实现类,所以需要加上Mapper注解。这样就完成了Mapper接口的定义

接下来就是mapper的xml实现

mapper.xml的dtd约束是

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

然后开始书写mapper内容,首先最外层是由mapper节点包裹,mapper节点有个nameSpace熟悉,是指定它所对应的java接口

<mapper namespace="com.lkl.test.mapper.TestMapper">

</mapper>

然后mapper节点下可以有很多不同的节点,这里我就不细说了,我们就简单的实现查询,使用select节点

select节点有个id属性,对应的是接口中需要实现的方法名,还有一个resultType属性,这是指返回的类型是什么(如果返回的是map或者是对象,可以使用resultMap属性)

然后节点内容是需要查询的sql语句

    <select id="test" resultType="java.lang.Integer">
      select 1 from dual
    </select>

我这里简单的查询一个数字。

这样就实现了TestMapper接口中的test方法。

然后就是service、事物这些,我这里就暂时不讲这么多,先简单测下mapper是否可用。

我们写个controller,然后直接注入mapper,调用方法进行测试

@Controller
@RequestMapping("test")
public class TestController {
    @Autowired
    TestMapper testMapper;
    
    @RequestMapping("mapper")
    @ResponseBody
    public String testMapper(){
        return "测试testMapper的test查询语句“select 1 from dual”返回结果为:"+testMapper.test();
    }
}

然后我们在启动类上面加上@ComponentScan注解,将controller扫描注入进来即可。

运行看效果:

=======================================c3p0链接池配置======================================

链接池的配置和上文配置的org.apache.tomcat.jdbc.pool.DataSource链接写法是一样的

连接池的好处是他帮你管理好了数据库的链接,然后我们可以设置各种参数来对数据库的链接进行优化

导入c3p0的jar包

<dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version> RELEASE</version>
        </dependency>

然后继续看javax.sql.DataSource的实现类有哪些

有很多的实现类其中也有部分的抽象类,我们可以注入写好的类就可以了,然后写了这么多的实现类,他们之间功能是不同的,可以自行百度有什么不同,我这里就用ComboPooledDataSource

代码如下:

<bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    </bean>

和上述的配置都差不多,只是property节点的name略有不同,然后他除了设置这些基本的链接参数外,还可以设置很多的参数

他继承的AbstractComboPooledDataSource这个类里面定义了可以设置的参数有很多

可以去看他的TO_STRING_IGNORE_PROPS这个集合。这里可以设置初始链接池的链接数量,最大链接数、最小链接数等

    <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <!--======================配置链接池的属性====================-->
        <property name="initialPoolSize" value="1"/>
        <property name="maxPoolSize" value="5" />
        <property name="minPoolSize" value="1"/>
    </bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值