1、导包
<!--TkMybatis-->
<!--Mysql连接-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency> <!--Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency> <!--durid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.16</version>
</dependency> <!--tk-Mybatis-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
2、在springboot的配置文件进行数据源配置
spring:
datasource:
url: jdbc:mysql://localhost:3316/test
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
3、配置实体类和表的映射
@Table(name = "user") //数据库表名
public class User {
@Id //表名该字段是主键,没有这个tkMybatis会把下面所有变量当成主键
Integer id;
@Column(name = "name") //如果变量名(username)和数据表的字段名(name)不一样,用该注解形成映射
String username;
Integer age;
。。。get/set方法。。。。
}
4、写接口继承Mapper<上面的实体类>
package com.User;
import tk.mybatis.mapper.common.Mapper;
public interface UserMapper extends Mapper<User> {
}
注意:Mapper是tk-mybatis里的通用Mapper
5、配置扫描包
@MapperScan(basePackages = "com.dao") //这个注解加到启动类上或者是配置类上
public class Basicskill29Application {
public static void main(String[] args) {
SpringApplication.run(Basicskill29Application.class, args);
}
}
6、测试
addCondition(“可以写sql语句的查询条件 例如age>18”)
andEqualTo("age", 10);//这里的age是对应User类里的变量名
package com.basicskill29;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
@SpringBootTest
@RunWith(SpringRunner.class)
public class TkTest {
@Autowired
UserMapper userMapper;
@Autowired
UserConverter userConverter;
@Test
public void insert() {
User user = new User();
user.setAge(18);
// user.setName("lisi");
// int effectveRow = userMapper.insert(user);
// System.out.println(effectveRow);
// int insert = userMapper.insert(user);
// System.out.println(insert);
int i = userMapper.insertSelective(user);
System.out.println(i);
}
@Test
public void select() {
// 根据主键查询(直接给主键值)
//User user = userMapper.selectByPrimaryKey(5);
// User u = new User();
// u.setId(5);
// User user = userMapper.selectByPrimaryKey(u);
// System.out.println(user);
查询出的user对象的id不为null,tkMybatis已经自动把主键值填入对象中,(底层的xml里肯定用了useGeneratedKeys="true" keyProperty="id")
// 根据条件查询
Example example = new Example(User.class);
// 创建具体的查询条件
example.createCriteria()
.andEqualTo("username", "aliang")
//.andGreaterThan("age", 18)
.andCondition("age > 18");//用sl语句的写法
List<User> users = userMapper.selectByExample(example);
System.out.println(users);
}
@Test
public void update() {
User user = new User();
user.setId(8);
user.setAge(20);
// int i = userMapper.updateByPrimaryKey(user);
// //int i1 = userMapper.updateByPrimaryKeySelective(user);
// System.out.println(i);
Example example = new Example(User.class);
example.createCriteria().andEqualTo("age", 10);//这里的age是对应User类里的变量名
int i1 = userMapper.updateByExampleSelective(user, example);
System.out.println(i1);
}
@Test
public void delete() {
int i = userMapper.deleteByPrimaryKey(10);
System.out.println(i);
}
}