springboot+mybatis+gradle在idea和oracle使用
来源:互联网 发布:绿色傲剑金蛇数据 编辑:程序博客网 时间:2024/05/18 17:42
╮(╯▽╰)╭这已经是第四版,第一版不小心删除了,心痛!
鉴于网上springboot+mybatis框架搭配各种各样,那么我就把我个人能搭配成功的经验和步骤介绍给大家,(我自己试了网上N钟方法搭配就是搭配不成功啊,出现各种各样的问题),在这里为大家介绍其中一个大神的帖子,里面并附带github的源代码程序
http://blog.csdn.net/gebitan505/article/details/54929287
按理说既然有教程还有源代码,你咋还在这里絮絮叨叨的写呢,对于大神来说,写的很详细,但是对于我这种菜鸟来做,就是缺少大神们默认省略的那些东西啊,大神的东西我就是用不了啊,各种不匹配啊,没有办法整合啊!下面就是菜鸟我的第一次springboot+mybatis框架之路。
首先你得建表才能开始(我用的数据库是oracle)
CREATE TABLE `test_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(40) NOT NULL,
`password` varchar(255) NOT NULL,
`age` int(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULTCHARSET=utf8
1.Springboot+mybatis项目建立
第一步
图1
第二步
图2
第三步
图3
至此你已经建立了一个springboot+mybatis的web项目啦,虽然不可能直接用。
使用mybatis自带的代码生成功能,怎么使用呢?
1. 你需要一个mybatis-generator-core-1.3.2.zip
2. 进入到D:\workspace\mybatis-generator-core-1.3.2\mybatis-generator-core-1.3.2\lib(我解压到D盘啦)
3. 补充oracle和mybatis的链接包ojdbc8.jar或者更高级也可以,我是懒得找了
有图哦:图5
4. 打开在这个文件夹内的generatorConfig.xml并进行修改
图7
5. 打开cmd,使用cd转换路径一直到
D:\workspace\mybatis-generator-core-1.3.2\mybatis-generator-core-1.3.2\lib里面
6. 输入命令
Java -jar mybatis-generator-core-1.3.2.jar -configfilegeneratorConfig.xml –overwrite
图8
很顺利,你可以在src里面的三个文件夹里面找到自己刚刚生成不同的类啦,把他们放到该放的位置上
图9
在****Mapper.xml里面的命名空间一定要对应dao层,也可以是mapper层的接口
<mapper namespace="com.example.demo.mapper.UserMapper" >
当然类肯定要对应刚刚生成的类啦
<resultMap id="BaseResultMap" type="com.example.demo.domain.User" >
2.mybatis的单独使用
如果你看了上面大神的教程并且可以使用的话,就不用看这个笨办法啦
我们可以了解到一般如果单独使用mybatis的时候,都是需要配置mybatis-config.Xml文件。
mybatis-config.Xml的位置是在resource里面哦
图6
大致上是这样的:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 对事务的管理和连接池的配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> <property name="username" value="ibatis" /> <property name="password" value="ibatis" /> </dataSource> </environment> </environments> <!-- mapping 文件路径配置 --> <mappers> <mapper resource="com/yu/res/UserMapper.xml" /> </mappers> </configuration>
在这种情况下,你就可以直接在图上面的位置上添加代码:
图4
try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); System.out.println("是输出:"+session.toString()+"这个还getConnection"+sqlSessionFactory.toString()); try { //session.selectOne("select age from test_user where id=1"); User user=new User(); user.setId(new BigDecimal(8)); user.setUserName("测试"); user.setPassword("123"); user.setAge(new BigDecimal(22)); UserDao userDao=session.getMapper(UserDao.class); userDao.insert(user); //session.insert("com.cums.UserMapper.insert",user); //BaseMapper mapper = session.getMapper(BaseMapper.class); //int result = mapper.getTestData(); //System.out.println(i); session.commit(); } finally { session.close(); }} catch (Exception ex) { StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); ex.printStackTrace(printWriter); System.out.println(stringWriter.toString());}
通过pl/sql可以看到插入的信息
图10
很愉快,你成功了吧,走到这一步就意味着你无法享受到springboot全自动化装填数据库sqlsessionFactory以及自动化扫描mapper等等功能啦。
接下来就是见证奇迹的时刻啦!
3.整合mybatis到springboot上
可以看到mybatis-config.Xml的威力,那么因为它也只是一个链接mapper和装填数据库信息的东西,那么我们就把它写成类,根据spring本身的bean特性,我们引入三个工具类
DataSourceConfig.Class
package com.example.demo.conf;import javax.sql.DataSource;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.jdbc.datasource.DriverManagerDataSource;@Configuration@PropertySource({"classpath:test/jdbc.properties"})//这里指的是存放数据库信息的路径,对应的是resources文件夹public class DataSourceConfig { private static final Logger logger = Logger.getLogger(DataSourceConfig.class); @Value("${jdbc.driver}") String driverClass; @Value("${jdbc.url}") String url; @Value("${jdbc.username}") String userName; @Value("${jdbc.password}") String password; @Bean(name = "dataSource") public DataSource dataSource(){ logger.info("DataSource"); DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUrl(url); dataSource.setUsername(userName); dataSource.setPassword(password); return dataSource; }}
Mybatisconfig
package com.example.demo.conf;import javax.sql.DataSource;import org.apache.ibatis.logging.LogFactory;import org.apache.ibatis.plugin.Interceptor;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import org.springframework.transaction.annotation.TransactionManagementConfigurer;@Configuration@EnableTransactionManagementpublic class MyBatisConfig implements TransactionManagementConfigurer { @Autowired DataSource dataSource; @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactoryBean(){ // LogFactory.useStdOutLogging(); LogFactory.useLog4JLogging(); SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setTypeAliasesPackage("com.example.demo.domain"); //添加XML目录 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { bean.setMapperLocations(resolver.getResources("classpath:mapper/*Mapper.xml")); return bean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean @Override public PlatformTransactionManager annotationDrivenTransactionManager() { // TODO Auto-generated method stub return new DataSourceTransactionManager(dataSource); } }
Mybatismapperscannerconfig
package com.example.demo.conf;import org.mybatis.spring.mapper.MapperScannerConfigurer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); mapperScannerConfigurer.setBasePackage("com.example.demo.mapper"); return mapperScannerConfigurer; }}
这三个工具类就可以将mybatis-config.Xml的作用搞定
那么接下来就是service层的编写
Service层编写
Service包含UserService接口和impl.UserServiceImpl实现类
接口:
public interface UserService { public User getUserById(BigDecimal userId); public boolean insert(User record);}
实现:
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;import java.math.BigDecimal;/** * Created by Administrator on 2017/7/31 0031. */@Service("userService")//一定要写userService哦public class UserServiceImpl implements UserService { @Resource//最好用Resource而不是Autowird,Resource对应的名字,Autowird对应的是类型 UserDao userDao; @Override public User getUserById(BigDecimal userId) { return userDao.selectByPrimaryKey(userId); } @Override @Transactional public boolean insert(User record) { try { userDao.insert(record); }catch (Exception ex){ return false; } return true; }}
很好,就差一点啦
Controller编写也就是action
import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.transaction.annotation.Transactional;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import java.io.InputStream;import java.math.BigDecimal;import java.util.HashMap;import java.util.Map;@RestController@RequestMapping("/app")public class AppController { @Resource//对应刚刚的serviceimpl实现类 UserService userService; /*@Resource UserDao userDao;*/ //简单的后台接口,用于测试 @RequestMapping("/info") public Object info(){ Map<String,Object> map = new HashMap<>(); map.put("info","hello hello hello"); return map; } @RequestMapping("/ok") public Object ok(){ /*User user=new User(); user.setId(new BigDecimal(14)); user.setUserName("带上service"); user.setPassword("123"); user.setAge(new BigDecimal(27)); boolean resut=userService.insert(user);*/ //userDao.insert(user); //userDao.selectByPrimaryKey(new BigDecimal(8)).getUserName() Map<String,Object> map = new HashMap<>(); map.put("info","hello hello hello"+userService.getUserById(new BigDecimal(8)).getUserName()); return map; }}
demoapplication
不需要加@MapperScan因为你已经写了一个类
在public class DemoApplication的前一行加一个@SpringBootApplication
至此就算是完成啦
相信@RequestMapping大家都会用吧
Localhost/app/ok
那么看一下结果哦
图11
至此springboot和mybatis算是弄在一起了,根本没有用springboot的优点嘛,为自己心疼一分钟!
如果你的项目是个老项目,甚至还有Hibernate的影子
在public class DemoApplication前面加一个
@EnableAutoConfiguration(exclude={ JpaRepositoriesAutoConfiguration.class//禁止springboot自动加载持久化bean})
publicclass DemoApplication{
private static final Logger logger = LoggerFactory.getLogger(Application.class);public static void main(String[] args) { SpringApplication.run(Application.class,args); logger.info("SpringBoot server stated on port: 8080开始啦");
……}
}
这已经是第四遍在写这个博客了,一个backspace就可以把我的工作轻松消去,已经累晕了,如果有错误,还望海涵!
完结散花
- springboot+mybatis+gradle在idea和oracle使用
- idea使用gradle搭建SpringBoot
- 使用IDEA+GRADLE创建springboot项目
- 使用idea+gradle创建springboot项目
- IDEA下创建Springboot,thymeleaf,Mybatis,Postgresql,Gradle项目
- IDEA+gradle+Springboot+mysql
- 使用idea+springboot+Mybatis搭建web项目
- 使用idea+springboot+Mybatis搭建web项目
- 在idea里使用SpringBoot整合MyBatis时遇到的Mapper扫描不到的问题
- springboot+idea+mybatis
- 使用 IntelliJ IDEA + Gradle + SpringBoot 搭建Hello World工程
- IntelJ IDEA 启动 springBoot ,而不使用 Gradle 启动
- 使用 IntelliJ IDEA + Gradle + SpringBoot 搭建Hello World工程
- 如何在 IntelliJ IDEA 中的 Gradle 项目上使用 Mybatis Generator 自动生成代码
- 使用IDEA和gradle搭建Spring MVC和MyBatis开发环境
- 使用IDEA和gradle搭建Spring MVC和MyBatis开发环境
- 使用IDEA和gradle搭建Spring MVC和MyBatis开发环境
- idea+springboot+gradle创建项目
- Balala Power! HDU
- 3.numpy基础使用
- 求最大公约数-辗转相除法-更相减损术
- Java对象的内存分配过程
- 17暑假多校联赛1.11 HDU 6043 KazaQ's Socks
- springboot+mybatis+gradle在idea和oracle使用
- Android获取路由ip
- CentOS配置日志集中管理
- 从源码角度解析View的绘制过程
- JVM垃圾收集算法
- Json字符串转excel表格文件
- 4.pandas基础使用
- Xamarin.Android入门
- cms启动流程