本文共 9734 字,大约阅读时间需要 32 分钟。
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扫描,有两种方式:
@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;
上面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 { ListlistAll();}
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 Listlist(){ List list = userMapper.listAll(); return list; }}
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 { ListlistAll();}
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 Listlist(){ 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/