前言:在上一篇快速生成SpringBoot项目的基础上,我们今天完成MyBatis的集成,并完成MySQL中的CURD。

MyBatis  是一个基于Java的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1.数据库创建一个表:用于测试结果:

DROP DATABASE IF EXISTS `bigdata`;
CREATE DATABASE bigdata /*!40100 DEFAULT CHARACTER SET utf8 */;
USE bigdata;
create table user(
id int AUTO_INCREMENT primary key,
username varchar(20),
userage int ,
useraddress varchar(200)
);
insert into user value(0,"张三0",20,"江苏");
insert into user value(0,"张三1",25,"江苏");
insert into user value(0,"张三2",24,"江苏");
insert into user value(0,"张三3",22,"江苏");
insert into user value(0,"张三4",20,"江苏");

2.为了快速生成entity,Mapper和mapperxml文件,我们使用mybatis generators快速生成代码。

    2.1我们现在pom.xml中完成相关引用

<plugin>  
            <groupId>org.mybatis.generator</groupId>  
            <artifactId>mybatis-generator-maven-plugin</artifactId>  
            <version>1.3.2</version>  
            <configuration>  
                <configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile> 
                <verbose>true</verbose>  
                <overwrite>true</overwrite>  
            </configuration>  
        </plugin>

    2.2在此src/main/resources/config/generatorConfig.xml路径下,完成相关配置(包括是否添加注释,实体文件位置等)特别关系的是example这个相关类(方法)时候要生成,此处设置的false,后面再研究。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
	<!-- 这边可写到配置文件里面 配置文件路径 <properties resource="generatorConfig.properties"/> -->
    <!--这边是自己生成,到后期个人觉得使用注解比较好,为了方便阅读  -->
	<!-- 找到mysql驱动包的位置 -->
	<classPathEntry
		location="C:/Users/whm/.m2/repository/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar" />
	<context id="context1">
		<!--关闭注释 -->
		<commentGenerator>
			<property name="suppressDate" value="true" />
			<property name="suppressAllComments" value="true" />
		</commentGenerator>

		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/bigdata" userId="root"
			password="520123" />
		<!-- //实体存放的位置 -->
		<javaModelGenerator targetPackage="com.whm.First_SpringBoot_M2.entity"
			targetProject="src/main/java">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		<!-- //mapper.xml存放的位置 -->
		<sqlMapGenerator targetPackage="com.whm.First_SpringBoot_M2.DaoXml"
			targetProject="src/main/java">
			<property name="enableSubPackages" value="ture" />
		</sqlMapGenerator>
		<!-- 生成的Dao接口 的包路径 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.whm.First_SpringBoot_M2.Dao" targetProject="src/main/java">
			<property name="enableSubPackages" value="ture" />
		</javaClientGenerator>
		<!-- //表名和实体名 -->
		<!-- 去掉 Example类  false 一般可以手动修改mapper得到  但是复杂的条件查询使用比较方便-->
		<table schema="" tableName="user" domainObjectName="User"
			enableCountByExample="false" enableUpdateByExample="false"
			enableDeleteByExample="false" enableSelectByExample="false"
			selectByExampleQueryId="false">
		</table>
	</context>
</generatorConfiguration>

3.完成项目框架(注意:这边所有添加包,一定要在启动类所在包的子目录下)也可以把上面数据库驱动的位置,实体类位置,等写在文件下,直接用xml文件读取。

spring boot buffersize设置多少合适 spring boot curd_MyBatis Generators

4.选择generatorConfig.xml右键run->run Configuations->Maven Build 选择现在项目->在Goals中输入命令 mybatis-generator:generate->Apply->Run    刷新项目,看到相应的文件

spring boot buffersize设置多少合适 spring boot curd_MyBatis Generators_02

5.到此我们持久层的文件基本生成,我们需要在application.properties中添加

mybatis.mapper-locations=classpath*:/mapper/*Mapper.xml

为了程序可以自动读到这个xml。(不然你在别的地方使用此Mapper时,会报bean找不到的错误)。

并配置数据库必要因素:

spring.datasource.url=jdbc:mysql://localhost:3306/bigdata
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=520123

6.编写Controller层,用来测试我们的整合是否完成。

@RestController
@RequestMapping("/User")
public class UserController {
	@Autowired
	private UserService userservice;
	//展示所有的user
	@RequestMapping("/showalluser")
	public List<User> showalluser() {
		System.out.println("showalluser");
		List<User> list=userservice.FindAll();
		return list;
	}
}

@RestController标识返回的是一个json数据,不会调用视图解析器,@Controller则返回到页面

@RequestMapping 是地址映射,对应uri的内容

@Autowired是Spring的自动织入,直接调用服务层的相关业务。

7.编程服务层Service

编一个接口,后再写一个实现类,解耦。

这边直接上实现类

@Service
@Transactional
public class UserServiceImpl implements UserService{

	@Autowired
	private UserMapper usermapper;
 
	@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
	public List<User> FindAll() {
		return usermapper.selectAll();
	}

}

@Service标识我是服务层

@Transactional标识开启事务

@Autowired自动织入,持久层的相关操作。

8.完成Dao层的相关操作,因为,查询所有用户是自动生成代码不没带的功能,我自己手动加入的

Mapper 接口层

添加:  List<User> selectAll();

Mapper实现层xml中

实现:

<select id="selectAll" resultMap="BaseResultMap">
   select * from user
   </select>

9.直接启动,启动类。在浏览器输入对应的uri:如下表示基本整合完成,对应的 增删改查,都在Mapper中就不一一测试。

推荐使用上一篇的springboot整合的junit来测试。

spring boot buffersize设置多少合适 spring boot curd_java_03

总结:1.配置*Mapper.xml位置是关键,后面研究注解是可以感觉注解的好处。

        2.mybatis generators自动生成代码的使用。

        3.xx.properties文件的创建   File->new->File,可以新建各种文件。