一:玩转通用Mapper插件

情景环境一:SpringBoot + Mybatis

通用Mapper定义:就是将单表操作的增删改查都是系统方法进行了实现,而不需要我们独自进行编写对应的mapper.xml的SQL语句,这样就可以方便我们对于平常使用到的映射而不用手动编写。


使用步骤:


(1)在pom.xml中添加依赖


tk.mybatis

mapper-spring-boot-starter

1.1.0

(2)编写通过mapper接口(这个和我们正常编写的java类最好分开一个目录,原因后续会说)


注意:比如,我一般我的controller,service,dao,mapper类的文件都是放在目录:com.hun.scw.*目录


而我的这个通用mapper接口我就放在:com.utils目录下即可。(因为,我的扫描类都是直接扫描com.hnu.scw.*目录的文件,而通用的mapper接口是不能被扫描的,否则会报classNotFind的错误,所以要特别注意)。目录如下所示:




package com.utils;

import tk.mybatis.mapper.common.Mapper;

import tk.mybatis.mapper.common.MySqlMapper;

 

/**

 * @ Author     :scw

 * @ Date       :Created in 下午 4:24 2018/6/17 0017

 * @ Description:配置通用mapper的接口

 * @ Modified By:

 * @Version: $version$

 */

public interface CommonMapper extends Mapper , MySqlMapper{

}

解析:看着这个接口没有编写任何的方法,但是它继承了Mapper接口,这就很强大了。


(3)在application.properties文件(或者application.yml)添加通用mapper配置


# 配置通用mapper插件的内容

# 第一个是配置通用接口所在的目录

mapper.mappers=com.utils.CommonMapper 

mapper.not-empty=false

mapper.identity=MYSQL

(4)编写我们根据不同实体pojo类需要进行的mapper操作接口。(我这里就随便写两个额外的操作,但是你使用的时候你就会发现很奇妙的事情,就是比如增删改查的单表的操作都已经写好了,而不用自己编写mapper.xml文件哦,强大不强大?)


package com.hnu.scw.mapper;

import com.hnu.scw.pojo.Person;

import com.utils.CommonMapper;

import org.apache.ibatis.annotations.Mapper;

import org.springframework.stereotype.Repository;

import java.util.List;

 

/**

 * @ Author     :scw

 * @ Date       :Created in 下午 1:53 2018/6/14 0014

 * @ Description:用于处理person pojo相关的数据库操作(这里实现了通用mapper接口)

 * @ Modified By:

 * @Version: $version$

 */

@Mapper

public interface PersonMapper extends CommonMapper{

    /**

     * 添加一个人的数据信息

     * @param person

     */

     void personAdd(Person person);

    /**

     * 查询所有的person信息

     * @return

     */

    List findPersonList();

}

(5)进行测试效果。(实现通用mapper接口的增删改查,这样就方便大家进行比较,明明mapper没有写这些方法为什么还可以执行呢?这就是通用mapper的作用)


package com.example.springbootmanytest;

import com.hnu.scw.config.SpringbootmybatisbyxmlApplication;

import com.hnu.scw.mapper.PersonMapper;

import com.hnu.scw.pojo.Person;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringJUnit4Cla***unner;

import org.springframework.test.context.junit4.SpringRunner;

 

import java.util.List;

 

@RunWith(SpringJUnit4Cla***unner.class)

@SpringBootTest(classes = SpringbootmybatisbyxmlApplication.class)

public class SpringbootmanytestApplicationTests {

@Autowired

private PersonMapper personMapper;

//查询所有的数据

@Test

public void test1() {

List people = personMapper.selectAll();

for (Person p: people) {

System.out.println(p.getName());

}

}

//根据id进行查询数据(根据通用mapper实现)

@Test

public void test2() {

Person person  = new Person();

person.setId(1);

Person i = personMapper.selectOne(person);

System.out.println("查询结果:" + i.toString());

}

 

//插入记录的测试(通过通用mapper接口实现)

@Test

public void test3() {

Person newUser = new Person();

newUser.setName("测试1");

personMapper.insertSelective(newUser);

System.out.println("插入成功");

}

 

//更新记录的测试(通过通用mapper接口实现)

//注意这个方法的时候,在实体pojo类中一定要定义主键用@Id这样进行标识,否则无法更新

@Test

public void test4() {

Person person  = new Person();

person.setId(2);

person.setName("123");

personMapper.updateByPrimaryKeySelective(person);

System.out.println("更新成功");

}

//删除一条数据

@Test

public void test5() {

Person person  = new Person();

person.setId(2);

personMapper.deleteByPrimaryKey(person);

//如果想直接通过id进行更新,那么就必须在pojo中主键有@Id标识,否则执行失败

//personMapper.deleteByPrimaryKey(3);

System.out.println("删除成功");

}

}

情景环境2:Spring + Mybatis + Maven

使用步骤:


(1)添加通用mapper插件依赖和持久化注解依赖


  

    tk.mybatis  

    mapper  

    3.3.7  

  

  

    javax.persistence  

    persistence-api  

    1.0  

(2)在spring配置文件中,注入通用mapper的bean到容器中


  

    //配置扫描的mapper接口的路径,这个和配置mybatis一样

      

 

(3)编写自定义业务的mapper接口


package com.hnu.scw.mapper;

import com.hnu.scw.pojo.Person;

import com.utils.CommonMapper;

import org.apache.ibatis.annotations.Mapper;

import org.springframework.stereotype.Repository;

import java.util.List;

 

/**

 * @ Author     :scw

 * @ Date       :Created in 下午 1:53 2018/6/14 0014

 * @ Description:用于处理person pojo相关的数据库操作(这里实现了通用mapper接口)

 * @ Modified By:

 * @Version: $version$

 */

public interface PersonMapper extends Mapper{

    /**

     * 添加一个人的数据信息

     * @param person

     */

     void personAdd(Person person);

    /**

     * 查询所有的person信息

     * @return

     */

    List findPersonList();

}

(4)在service实现类层中使用mapper接口即可。


总结:这上面就是针对两种不同的环境情况进行了说明如何使用通用的mapper插件了,这样就方便我们减少很多的平常接口的实现了哦。。感觉还是非常不错的插件。


==============手动分割线,哈哈=============================================


二:玩转Mybatis generator插件

Mybatis generator插件定义:帮助我们能够快速生成数据库中对应的pojo实体类,mapper接口以及mapper.xml映射文件。当然,其只能够帮我们自动生成常用的,而并非是所有的。


情景一:SpringBoot + Mybatis环境

使用步骤:


(1)在pom.xml中添加插件的依赖


org.mybatis.generator

mybatis-generator-maven-plugin

1.3.2

Generate MyBatis Artifacts

generate

src/main/resources/generatorConfig.xml

true

true

mysql

mysql-connector-java

5.1.6

org.mybatis.generator

mybatis-generator-core

1.3.2

(2)编写mybatis generator对应的配置文件,这个名字要与pom.xml依赖中设置的是对应的关系。(主要是用于自定义生成的相关配置内容)


        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

   

   

   

   

   

 

   

   

   

       

       

       

       

       

       

       

 

       

       

       

       

       

 

       

 

       

       

           

           

       

 

       

       

       

       

           

           

       

 

       

       

           

           

       

       

       

           

       

       

       

           

       

       

       

           

           

           

       

   

(3)为了让我们的生成配置文件具有更好的灵活性,所以,在上面中都是用的引用方式,所以,在(2)中的同级目录中创建一个便于修改的配置文件,取名字为:mybatisGeneratorinit.properties


#Mybatis Generator configuration

#dao类和实体类的位置

project =src/main/java

#mapper文件的位置

resources=src/main/resources/mybatis

#根据数据库中的表生成对应的pojo类、dao、mapper

jdbc_driver =com.mysql.jdbc.Driver

jdbc_url=jdbc:mysql://localhost:3306/test

jdbc_user=root

jdbc_password=123456

(4)上面的配置基本完成,但是这时候,你要确保你的数据库中有对应的数据库名和数据表内容,否则,就需要先进行创建表这些内容哦。


(5)运行插件,进行生成pojp实体类,mapper接口以及mapper.xml映射文件。


注意:


方法一:


步骤:


一:进入电脑的cmd窗口。(windows7:电脑的左下角点击图标-》然后输入cmd即可)


二:进入到当前工程下的pom.xml文件所在的目录


三:在命令行中,输入:


mvn mybatis-generator:generate

四:然后慢慢的等待一会即可。时间主要是根据你的表的内容来决定。


五:返回到项目中,你就会发现对应的目录中,生成了我们所需要的内容。如果,你对生成的不是很满意,需要修改生成的内容,那么就回到mybatis generator的配置文件进行修改再生成即可。


方法二:


步骤:


一:找到界面中的最下角的如下图标:




二:点击图标,并选择maven project


三:选择Plugins目录




四:根据如图所示进行:




五:点击上面run即可。。等待一会,就会在对应的目录中生成相应的内容了。


方法三:


一:点击IDEA界面的右上角,如下的图标:




二:选择‘+’号,找到maven




三:如下进行配置




四:切换内容,点击绿色三角形进行运行即可。




五:稍微等待一会,就会在对应的目录文件中生成我们所想要的内容。


情景二:Spring + Mybatis + Maven环境

使用步骤:配置的步骤和情景一是一模一样,只是对应的配置的目标文件的目录要对应就好了,所以这里不多说。


注意:这个直接按照上面情景一中提到的方法一和方法三都是可以的。所以,就不多介绍。毕竟SpringBoot其实就是一种Maven结构的开发框架,所以,大体的都是一样的。


总结:mybatis generator插件是方便我们生成我们在配置文件中进行配置的数据库所对应的数据库表和列,这能够方便我们进行一些快速生成pojo实体类,mapper接口以及mapper.xml映射。所以,还是具有一定的作用的。


=================手动分割线============================================


知识点总结:


通过介绍的两个插件的使用,我想大家应该多多少少的有收获吧。当然,它们的使用场景也是不一样的,而且作用也是不尽相同的,所以这个都需要各自根据需求来进行的,而不要一味的套用。


(1)针对通用mapper插件的作用,是方便我们写很多常用的数据库操作,能够方便我们进行开发。


(2)针对mybatis generator插件的作用,是方便我们生成与数据库对应的pojo实体,mapper以及常用的mapper.xml操作内容。


    好了,就介绍这么多了,欢迎大家阅读我其他的文章哦。。互相学习,,,,