博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot 整合Mybatis
阅读量:3930 次
发布时间:2019-05-23

本文共 9734 字,大约阅读时间需要 32 分钟。

一、SpringBoot 整合Mybatis

1、在创建SpringBoot 的项目时,选择JDBC、mysql,Mybatis,web的组件,或者自己手动在maven中添加库依赖:

org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
runtime
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2

2、在 application.yml(或aproperties)中添加相应的配置:

     注意 :配置 mybatis 的配置文件位置

server:  port: 80# Datasource# 数据源基本配置spring:  datasource:    username: root    password: 123456    url: jdbc:mysql://localhost:3306/my_springboot?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT    driver-class-name: com.mysql.cj.jdbc.Driver # com.mysql.jdbc.Driver# 配置mybatis的配置文件的位置mybatis:  config-location: classpath:mybatis/mybatis-config.xml  mapper-locations: classpath:mybatis/mapper/*.xml# 打印sql:日志的方式logging:    level:      # 路径指的是mybatis对应的方法接口所在的包。并不是mapper.xml所在的包      cn.jq.springbootdemo.springbootdemo.dao : debug

3、新建一个model, dao类:

       在测试类中测试,所以 service 和controller就不写了

public class User {    private long id;    private String username;    private String pazzword;    private String sex;    private int age;    private Date birthday;    ...}
public interface UserDao {    void add(User user);    void delete(int id);    void update(User user);    User get(int id);}

 

4、在 resources 下创建一个mybatis文件夹,在其下新建 mybatis-config.xml 全局配置mybatis文件

5、在 mybatis 下新建 mapper 文件夹,在其下新建 *.xml 映射文件

insert into t_user(username, pazzword, sex, age, birthday) values(#{username},#{pazzword},#{sex},#{age},#{birthday})
delete from t_user where id = #{id}
update t_user u set u.username = #{username}, u.sex = #{sex} where id = #{id}

6、 在 启动类中 添加 @MapperScan 注解 扫描 mapper

配置mapper扫描,有两种方式:

  • 1. 是直接在UserDao类上添加@Mapper注解,弊端是所有的Mapper都要手动添加,要是有一个没添加就会报错。
  • 2. 直接在启动类上添加Mapper扫描,推荐使用。
@SpringBootApplication@MapperScan(value = "cn.jq.springbootdemo.springbootdemo.dao")public class SpringbootdemoApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootdemoApplication.class, args);    }}

7、 在 测试类中 进行 CRUD

@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringbootdemoApplicationTests {    @Autowired    private UserDao userDao;    @Test    public void contextLoads() throws SQLException {                System.out.println(userDao);        // 新增//        User user = new User();//        user.setUsername("张三");//        user.setPazzword("zhs123");//        user.setSex("男");//        user.setAge(20);//        user.setBirthday(new Date());//        userDao.add(user);        // 删除        //userDao.delete(1);        // 修改        User user = new User();        user.setId(6);        user.setUsername("张三6");        user.setSex("女");        userDao.update(user);                // 查询        user = userDao.get(6);        System.out.println("getUser==" + user);    }}

   

  数据表:

CREATE TABLE `t_user` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(255) DEFAULT NULL,  `pazzword` varchar(255) DEFAULT NULL,  `age` int(11) DEFAULT NULL,  `birthday` datetime DEFAULT NULL,  `sex` varchar(11) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

   

二、SpringBoot 整合Mybatis

上面xml和mapper分离了,查看阅读不直观。这里方式二整合如下:不同点这里列出来。

1、在 application.yaml

这里不需要配置mybatis的配置文件的位置,放到pom中配置。

server:  port: 8088# 数据源基本配置spring:  datasource:    username: root    password: 123456    url: jdbc:mysql://localhost:3306/sbtdb1?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT    driver-class-name: com.mysql.cj.jdbc.Driver    type: com.alibaba.druid.pool.DruidDataSource

2、引入依赖之后,在插件中加入:

src/main/java
**/*.xml
src/main/resources
...

3、UserMapper和xml

public interface UserMapper {    List
listAll();}

4、测试

@SpringBootApplication@MapperScan(basePackages ={"com.example.mybatis.mapper"})public class MybatisApplication {    public static void main(String[] args) {        SpringApplication.run(MybatisApplication.class, args);    }}
@RestControllerpublic class UserController {    @Autowired    private UserMapper userMapper;    @GetMapping("/list")    public List
list(){ List
list = userMapper.listAll(); return list; }}

 

三、SpringBoot 配置多数据源之Mybatis

1、在创建SpringBoot 的项目时,引入依赖,在插件中声明 .xml

org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
mysql
mysql-connector-java
runtime
com.alibaba
druid-spring-boot-starter
1.1.13
src/main/java
**/*.xml
src/main/resources
...

2、在 application.aproperties中添加两个数据源的配置信息

server.port=8088# 配置两个数据源spring.datasource.dsone.url=jdbc:mysql://localhost:3306/sbtdb1?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMTspring.datasource.dsone.username=rootspring.datasource.dsone.password=123456spring.datasource.dsone.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.dsone.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.dstwo.url=jdbc:mysql://localhost:3306/sbtdb2?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMTspring.datasource.dstwo.username=rootspring.datasource.dstwo.password=123456spring.datasource.dstwo.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.dstwo.driver-class-name=com.mysql.cj.jdbc.Driver

3、在配置类中,定义两个DataSource Bean

@Configurationpublic class DataSourceConfig {    /**     * 定义两个DataSource     * 使用spring.datasource.dsone前缀的数据库配置去创建一个DataSource     */    @Bean("dsOne")    @ConfigurationProperties(prefix = "spring.datasource.dsone")    DataSource dsOne() {        return DruidDataSourceBuilder.create().build();    }    @Bean("dsTwo")    @ConfigurationProperties(prefix = "spring.datasource.dstwo")    DataSource dsTwo() {        return DruidDataSourceBuilder.create().build();    }}

4、提供两个Bean,并配置数据源

@Configuration@MapperScan(basePackages = "com.example.mybatis.mapper1",        sqlSessionFactoryRef = "sqlSessionFactory1",        sqlSessionTemplateRef = "sqlSessionTemplate1")public class MyBatisConfigOne {    @Resource(name = "dsOne")    DataSource dsOne;    @Bean    SqlSessionFactory sqlSessionFactory1() {        SqlSessionFactory sessionFactory = null;        try {            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();            bean.setDataSource(dsOne);            sessionFactory = bean.getObject();        } catch (Exception e) {            e.printStackTrace();        }        return sessionFactory;    }    @Bean    SqlSessionTemplate sqlSessionTemplate1() {        return new SqlSessionTemplate(sqlSessionFactory1());    }}
@Configuration@MapperScan(basePackages = "com.example.mybatis.mapper2",        sqlSessionFactoryRef = "sqlSessionFactory2",        sqlSessionTemplateRef = "sqlSessionTemplate2")public class MyBatisConfigTwo {    @Resource(name = "dsTwo")    DataSource dsTwo;    @Bean    SqlSessionFactory sqlSessionFactory2() {        SqlSessionFactory sessionFactory = null;        try {            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();            bean.setDataSource(dsTwo);            sessionFactory = bean.getObject();        } catch (Exception e) {            e.printStackTrace();        }        return sessionFactory;    }    @Bean    SqlSessionTemplate sqlSessionTemplate2() {        return new SqlSessionTemplate(sqlSessionFactory2());    }}

5、mapper创建(mapper1和mapper2根据业务去写)

public interface UserMapper1 {    List
listAll();}

6、测试

@SpringBootApplicationpublic class MybatisApplication {    public static void main(String[] args) {        SpringApplication.run(MybatisApplication.class, args);    }}
@RestControllerpublic class UserController {    @Autowired    private UserMapper1 userMapper1;    @Autowired    private UserMapper2 userMapper2;    @GetMapping("/list1")    public List
list(){ List
list = userMapper1.listAll(); return list; } @GetMapping("/list2") public List
list2(){ List
list = userMapper2.listAll(); return list; }}

   

在Spring Boot中,查看org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration类中,可以看到Spring Boot提供了两个Bean(一个SqlSessionFactory,一个sqlSessionTemplate)。

单数据源时,我们指明数据源配置信息,SpringBoot可自动为我们创建好这两个bean。

多数据源时,我们根据数据源配置信息,可以自已定义创建这两个bean。

有兴趣可以查看下源码。

 

参考文章:

ends ~

转载地址:http://ijcgn.baihongyu.com/

你可能感兴趣的文章
知识管理
查看>>
项目整体绩效评估
查看>>
信息安全系统和安全体系
查看>>
信息系统安全风险识别与评估
查看>>
安全策略
查看>>
信息安全技术基础
查看>>
PKI公开密钥基础设施
查看>>
PMI权限(授权)管理基础设施
查看>>
信息安全审计系统S-Audit
查看>>
技术解读第一章
查看>>
信息安全系统的组织管理
查看>>
信息安全系统
查看>>
技术解读第二章
查看>>
技术解读第三章
查看>>
Linux磁盘分区基础
查看>>
系统无处不在
查看>>
一般系统论的含义
查看>>
项目整体管理脉络
查看>>
项目范围管理脉络
查看>>
项目时间管理脉络
查看>>