Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库 (3)

写好配置文件之后,还需要写一个启动程序,用于加载配置文件,运行就可以生成相关配置。

import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; import java.io.File; import java.util.ArrayList; /** * <p> * Mybatis generator的逆向生成工具类 * * @Author niujinpeng * @Date 2018/8/30 22:57 */ public class MybatisGenerator { public void generator() throws Exception { ArrayList<String> warnings = new ArrayList<>(); boolean overwrite = true; // 指定你想工程配置文件 File configFile = new File("generatorConfig.xml"); System.out.println(configFile.getAbsolutePath()); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } public static void main(String[] args) throws Exception { MybatisGenerator mybatisGenerator = new MybatisGenerator(); mybatisGenerator.generator(); } }

生成的文件如下图。

项目结构

查看生成的接口以及 XML 映射文件可以发现已经自动生成了常用的几个方法。

deleteByPrimaryKey

insert

updateByPrimaryKey

selectByPrimaryKey

selectAll

4.3. 注解配置方式

Mybatis 同样支持注解的方式配置映射关系,使用注解可以替代 XML 的配置,写一个简单的注解例子。在刚才生成的 BookMapper.java 中增加一个根据作者名称查询的方法,并映射字段对应的属性。

// 添加 @Repository 注解,这样在使用 @Autowired 引入的时候不会报横线 @Repository public interface BookMapper { /** * 注解方式配置映射 * * @param author * @return * @Results 字段和属性映射关系 * @Select 查询语句 */ @Results({ @Result(property = "id", column = "ids"), @Result(property = "name", column = "name"), @Result(property = "author", column = "authors"), @Result(property = "createTime", column = "create_time") }) @Select("select id as ids, author as authors, name, price, create_time, description from book where author = #{author}") List<Book> selectByAuthor(@Param("author") String author); // 省略下面自动生成代码 5. Springboot mybatis 测试

正常情况下会在项目中的业务层 service 包下创建接口和类然后通过注解引入使用。

@Autowired private BookMapper bookMapper;

我们只是实验,没有这样写一套的必要,只要能确保 BookMapper 可以正常注入使用就好了。因此创建测试类进行测试。

创建测试类

在生成的(也可以完全手写测试方法)测试类中添加测试方法进行测试。

@RunWith(SpringRunner.class) @SpringBootTest public class BookMapperTest { @Autowired private BookMapper bookMapper; @Test public void testSelectAll() { List<Book> bookList = bookMapper.selectAll(); Assert.assertNotNull(bookList); bookList.forEach((book) -> System.out.println(book)); } @Test public void testSelectByAuthro() { List<Book> bookList = bookMapper.selectByAuthor("金庸"); Assert.assertNotNull(bookList); bookList.forEach((book) -> System.out.println(book)); } @Test public void testSelectByPrimaryKey() { Book book = bookMapper.selectByPrimaryKey(2); Assert.assertNotNull(book); System.out.println(book); } public void testDeleteByPrimaryKey() { int primaryKey = bookMapper.deleteByPrimaryKey(8); Assert.assertNotEquals(0, primaryKey); System.out.println(primaryKey); } }

为了观察查询接口 book 的信息输出,重写 Book 类的 toString 方法,然后运行单元测试。

单元测试结果

可以发现测试全部通过。结果正常。
文章代码已经上传到 Github Spring Boot 连接数据库 - Mybatis。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjdpp.html