一、開場白
許多小夥伴,搭建一個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去將代碼生成器配置好,就好了
如果有問題掃這個神奇的二維碼會解答你的一切問題