Springboot+mybatis如此用才高效(xml和无xml两种方式)

本文介绍的是idea+springboot+mybatis 在mybatis插件的基础上进行数据库操作。数据库使用Oracle。

首先准备工作需要做好。

1)安装mybatis插件;

2)新建一个demo web工程;

3)新建一个student表;

安装mybatis插件

打开:File -> settings->Plugins , 找到Free MyBatis plugin插件,并进行安装。安装后需要重启idea。

idea新建一个mybatis01的web工程

项目大致目录如上。pom.xml引入mybatis,lombak等依赖。

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency>

数据库中创建Student表,ID为主键,并使用序列自增

CREATE TABLE "STUDENT"    (      "ID" NUMBER NOT NULL ENABLE,  "NAME" VARCHAR2(20),  "AGE" NUMBER,  "SEX" VARCHAR2(20),  "SELF_FEATURE" VARCHAR2(100),  "CREATETIME" DATE,  "REMARK" VARCHAR2(50),  CONSTRAINT "STUDENT_PK" PRIMARY KEY ("ID"))

在config目录下进行数据库源进行配置

@Data@Configuration@ConfigurationProperties(prefix = "test.datasource")@PropertySource({ "classpath:db-test-${spring.profiles.active}.properties" })@MapperScan(basePackages = { "com.yujy.mybaits01.test.dao" }, sqlSessionFactoryRef = "testSqlSessionFactory")public class TestDataSourceConfig {    private String url;    private String username;    private String password;    private String driverClassName;    private String poolName;    private int minimumIdle;    private int maximumPoolSize;    private int idleTimeout;    private int maxLifetime;    private int connectionTimeout;    private String connectionTestQuery;    @Bean(name = { "testDataSource" })    public DataSource testDataSource() {        HikariDataSource dataSource = new HikariDataSource();        dataSource.setJdbcUrl(this.url);        dataSource.setUsername(this.username);        dataSource.setPassword(this.password);        dataSource.setDriverClassName(this.driverClassName);        dataSource.setMinimumIdle(this.minimumIdle);        dataSource.setMaximumPoolSize(this.maximumPoolSize);        dataSource.setIdleTimeout(this.idleTimeout);        dataSource.setMaxLifetime(this.maxLifetime);        dataSource.setConnectionTimeout(this.connectionTimeout);        dataSource.setConnectionTestQuery(this.connectionTestQuery);        dataSource.setPoolName(poolName);        return dataSource;    }    @Bean    @ConfigurationProperties(prefix = "mybatis.configuration")    public org.apache.ibatis.session.Configuration myBatisCfg() {        return new org.apache.ibatis.session.Configuration();    }    @Bean(name = { "testSqlSessionFactory" })    public SqlSessionFactory testSqlSessionFactory(@Qualifier("testDataSource") DataSource dataSource)            throws Exception {        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(dataSource);        sessionFactory.setConfiguration(myBatisCfg());        return sessionFactory.getObject();    }}

db-test-${spring.profiles.active}.properties 为测试用数据库的用户密码信息;

resources/db-test-dev.properites对数据库字段配置:

test.datasource.url=jdbc:oracle:thin:@localhost:1521:orcltest.datasource.username=testtest.datasource.password=testtest.datasource.driver-class-name=oracle.jdbc.OracleDrivertest.datasource.minimum-idle=1test.datasource.maximum-pool-size=5test.datasource.pool-name=HikariCPtest.datasource.auto-commit=truetest.datasource.idle-timeout=30000test.datasource.max-lifetime=900000test.datasource.connection-timeout=10000test.datasource.connection-test-query=SELECT 1 FROM DUAL

2.mybatis自动生成bean,dao,xml

通过Database连接上数据库

选择Student表,右键单击选择“mybatis-generator”

选择bena,dao,xml存放路径:

点击0k,生成文件如下:

注意:

这里映射的bean文件中自动将表字段“_”去掉,并转为驼峰命名形式。

需要我们进行mybatis.configuration配置:

mybatis.configuration.map-underscore-to-camel-case=true

Dao中自动生成的基础sql:

public interface StudentDao {int deleteByPrimaryKey(BigDecimal id);int insert(Student record);int insertSelective(Student record);Student selectByPrimaryKey(BigDecimal id);int updateByPrimaryKeySelective(Student record);int updateByPrimaryKey(Student record);}

我们创建cotroller来测试下dao

@RequestMapping(value = "/addStudent", headers = "Content-Type=application/json;charset=UTF-8", method = RequestMethod.POST)public Student addStudent(@RequestBody Map args) {    Student  student = new Student();    student.setAge(BigDecimal.valueOf(18));    String name = (String) args.get("name");    student.setName(name);int result = studentDao.insertSelective(student);    log.info("result:{}",result);return student;}

Postman 测试接口:

表中:

基本功能验证ok。

Mybatis插件帮我们自动生成了一些常用的sql语句,后续其他的就需要自己去编写。这里可以推荐使用无xml模式。直接在Dao中编写sql。

例如我想查询所有学生信息,则可以这样操作:

@Select(value="select *from Student") List<Student> selectAllStudent();

小结:

idea中使用mybatis插件来生成表对应的bean,dao和xml文件,大大节省开发时间,避免了人工拼写字段错误不规范的问题。再加上无xml sql编写,使得功能开发效率大大提升。

源码下载见百度网盘:https://pan.baidu.com/s/1AufvxeIjw885ZAm3wHgZFA

请关注微信公众号“大圣的如意棒”,回复“yyds” 获取提取码。

原文见:https://mp.weixin.qq.com/s/Lgo4sxHjM-Us2Wt5yjwAAg

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容