一、开场白
许多小伙伴,搭建一个mybatis的javaWeb项目是不是网上的类型很多啊,或者说只是搭建一部分,那都是浪费时间,我今天给大家搭建的这个项目是很方便的:
1. 采用mybatis作为交互层
2. 用到了tkMapper的方便性
3. 还加入了generator进行mapper,xml,model的生成
4. mapper和xml在同一目录,方便管理
二、实际开发
1. 我们先搭建一个springboot的项目,这个就不细说了。
2. 我们先搭建 generator 来生成mapper和xml以及model:
<1> pom中加入以下代码
<!--Mybatis generator 映射文件自动生成-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.4</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
<!--Mybatis generator 配置文件 generatorCongig.xml 的路径-->
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
<2> .在resources下面加入 generatorConfig.xml,记得修改数据库和路径
<?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>
<context defaultModelType="flat" id="mysql" targetRuntime="MyBatis3Simple">
<!-- 生成的Java文件的编码 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 生成根Mapper 所有的Mappwe都 继承这个 根 -->
<!-- 这个地方 注意一下 , 和你配置的 Application上面 MapperScan 的 mapper包扫描 不要再一个文件夹下,
比如我的 我的包扫描是 @MapperScan("com.jzj.tkdemo.dao") 这个地方是 其他的包
总而言之就是 BaseMapper 不要放在Mapper的 包扫描中, 具体原因看 下面介绍
-->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/security"
userId="root"
password="root">
</jdbcConnection>
<!-- 生成的数据库实体 PO 所在位置 -->
<javaModelGenerator targetPackage="com.zhuzi.part.security.dao.model"
targetProject="src/main/java">
</javaModelGenerator>
<!-- MAPPER XML java 文件所在位置-->
<sqlMapGenerator targetPackage="com.zhuzi.part.security.dao.mapper"
targetProject="src/main/java">
</sqlMapGenerator>
<!-- Mapper.java 所在的文件夹,也就是mapper接口 文件夹
1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
2,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
3.这个包是 com.jzj.tkdemo.dao 不要把上面的BaseMapper 放在下面 切记切记
-->
<javaClientGenerator targetPackage="com.zhuzi.part.security.dao.mapper"
targetProject="src/main/java"
type="XMLMAPPER">
</javaClientGenerator>
<!-- user 是数据库表, UserPO 是你根据报表 要生成的 实体类-->
<table schema="" tableName="s_user" domainObjectName="User"></table>
</context>
</generatorConfiguration>
这就配好了,下面我们找到下图运行
我们的代码就生成了
<3> . springboot的src中不认识xml静态文件,我们在pom中加入下面的东西就ok了
<resources>
<!-- 设置对*.properties进行过虑,即这些文件中的${key}会被替换掉为真正的值 -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.woff</exclude>
<exclude>**/*.woff2</exclude>
<exclude>**/*.ttf</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.woff</include>
<include>**/*.woff2</include>
<include>**/*.ttf</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<!-- 是否替换资源中的属性 -->
<filtering>false</filtering>
</resource>
</resources>
<4> . 配置我们的mybatis了
现在pom中加入下面jar
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
在在yml中配置好数据库
spring:
datasource:
password: root
url: jdbc:mysql://127.0.0.1:3306/security
driver-class-name: com.mysql.jdbc.Driver
username: root
完了在启动类加入这个注解
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan("com.zhuzi.part.security.dao.mapper")
到这就配置完了,我们来写接口测试一下
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/user")
public User userAdd(@RequestBody User user){
return userService.addUser(user);
}
@DeleteMapping("/user")
public boolean useDelete(@PathVariable int id){
return userService.addDelete(id);
}
@GetMapping("/user")
public List<User> useSelect(){
return userService.selectUser();
}
}
public interface UserService {
User addUser(User user);
boolean addDelete(int id);
List<User> selectUser();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User addUser(User user) {
return (userMapper.insert(user) > 0)? user : null;
}
@Override
public boolean addDelete(int id) {
return userMapper.deleteByPrimaryKey(id) > 0 ? true:false;
}
@Override
public List<User> selectUser() {
return userMapper.selectAll();
}
}
这就完了,这就是我说的tkmapper的方便之处,基础的增删改查不用自己写,是不是被git到了。
注:如果你连collection都不想写,你去mybatis-plus去将代码生成器配置好,就好了
如果有问题扫这个神奇的二维码会解答你的一切问题