1.整合tkmapper
-
添加tkmapper的依赖
<!--tkmapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
-
修改启动类的@MapperScan注解的包
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan("com.qfedu.fmmall.dao")
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
2.逆向工程
- 添加逆向工程依赖
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
</plugin>
- 逆向⼯程配置
在resources/generator⽬录下创建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>
<!-- 引⼊数据库连接配置 -->
<!-- <properties resource="jdbc.properties"/>-->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- 配置 GeneralDAO -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.qfedu.tkmapperdemo.general.GeneralDAO"/>
</plugin>
<!-- 配置数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/fmmall2"
userId="root" password="admin123">
</jdbcConnection>
<!-- 配置实体类存放路径 -->
<javaModelGenerator targetPackage="com.qfedu.tkmapperdemo.beans"
targetProject="src/main/java"/>
<!-- 配置 XML 存放路径 -->
<sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mappers"/>
<!-- 配置 DAO 存放路径 -->
<javaClientGenerator targetPackage="com.qfedu.tkmapperdemo.dao"
targetProject="src/main/java" type="XMLMAPPER"/>
<!-- 配置需要指定⽣成的数据库和表,% 代表所有表 -->
<table tableName="%">
<!-- mysql 配置 -->
<!-- <generatedKey column="id" sqlStatement="Mysql" identity="true"/>-->
</table>
<!-- <table tableName="tb_roles">-->
<!-- <!– mysql 配置 –>-->
<!-- <generatedKey column="roleid" sqlStatement="Mysql" identity="true"/>-->
<!-- </table>-->
<!-- <table tableName="tb_permissions">-->
<!-- <!– mysql 配置 –>-->
<!-- <generatedKey column="perid" sqlStatement="Mysql" identity="true"/>-->
<!-- </table>-->
</context>
</generatorConfiguration>
- 将配置⽂件设置到逆向⼯程的maven插件
- 执⾏逆向⽣成
3.使用方法
import org.springframework.beans.factory.annotation.Autowired;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TkmapperDemoApplication.class)
public class CategoryDAOTest {
@Autowired
private CategoryDAO categoryDAO;
@Test
public void testInsert() {
Category category = new Category(0, "测试类别3", 1, 0, "03.png", "xixi", "aaa.jpg", "black");
//int i = categoryDAO.insert(category);
int i = categoryDAO.insertUseGeneratedKeys(category);
System.out.println(category.getCategoryId());
assertEquals(1, i);
}
@Test
public void testUpdate() {
Category category = new Category(48, "测试类别4", 1, 0, "04.png", "heihei", "aaa.jpg", "black");
int i = categoryDAO.updateByPrimaryKey(category);
// 根据⾃定义条件修改,Example example就是封装条件的
// int i1 = categoryDAO.updateByExample( Example example);
assertEquals(1, i);
}
@Test
public void testDelete() {
int i = categoryDAO.deleteByPrimaryKey(48);
// 根据条件删除
//int i1 = categoryDAO.deleteByExample(Example example);
assertEquals(1, i);
}
@Test
public void testSelect1() {
//查询所有
List<Category> categories = categoryDAO.selectAll();
for (Category category : categories) {
System.out.println(category);
}
}
@Test
public void testSelect2() {
//根据主键查询
Category category = categoryDAO.selectByPrimaryKey(47);
System.out.println(category);
}
@Test
public void testSelect3() {
//条件查询
//1.创建⼀个Example封装 类别Category查询条件
Example example = new Example(Category.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("categoryLevel", 1);
criteria.orLike("categoryName", "%⼲%");
List<Category> categories = categoryDAO.selectByExample(example);
for (Category category : categories) {
System.out.println(category);
}
}
@Test
public void testSelect4() {
//分⻚查询
int pageNum = 2;
int pageSize = 10;
int start = (pageNum - 1) * pageSize;
RowBounds rowBounds = new RowBounds(start, pageSize);
List<Category> categories = categoryDAO.selectByRowBounds(new Category(), rowBounds);
for (Category category : categories) {
System.out.println(category);
}
//查询总记录数
int i = categoryDAO.selectCount(new Category());
System.out.println(i);
}
@Test
public void testSelect5() {
//带条件分⻚
//条件
Example example = new Example(Category.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("categoryLevel", 1);
//分⻚
int pageNum = 2;
int pageSize = 3;
int start = (pageNum - 1) * pageSize;
RowBounds rowBounds = new RowBounds(start, pageSize);
List<Category> categories = categoryDAO.selectByExampleAndRowBounds(example, rowBounds);
for (Category category : categories) {
System.out.println(category);
}
//查询总记录数(满⾜条件)
int i = categoryDAO.selectCountByExample(example);
System.out.println(i);
}
}