一、项目套路,啥都不说,先上依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
<`/dependency`>
二、过后当然是配置文件里,告诉SpringBoot,mybatis来了!!!!
这里我用的配置文件后缀是.yml,不是这个的请改成 mybatis.type-aliases-package: cn.markedquilt.demo.login.entity
mybatis:
type-aliases-package: cn.markedquilt.demo.login.entity
三、在唯一的启动类里添加对mapper包扫描@MapperScan(“你的mapper文件所在目录”)
@MapperScan("cn.markedquilt.demo.login.entity")
四、这里就可以开始最关键的,最自由的mapper开发啦
根据名字来看,就是这几个功能
@Select 查询。
@Result 这是用来保证数据库和java实体类中名字映射的,如果两边名字一样,就不需要使用这个注解。
@Insert 插入。
@Update 更新。
@delete 删除。
附上我自己写的一个简单的增删查改:
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Result;
import java.util.List;
public interface UserMapper {
@Select("SELECT * FROM user")
@Results(
{@Result(property = "username",column = "username",javaType = java.lang.String.class),@Result(property = "sex",column = "sex")
})
List<User> getAllUser();
@Select("SELECT * FROM user WHERE id=#{id}")
User getById();
@Insert("INSERT INTO user(username,password,sex) values(#{username},#{password},#{sex})")
void insertOne(User user);
@Update("UPDATE user SET username=#{username},password=#{password},sex=#{sex} WHERE id=#{id}")
void updateUser(User user);
@Delete("DELETE FROM user WHERE id=#{id}")
void deleteById(Integer id);
}
五、使用,这里转载一个别人写的,不想测了,看电影去啦!!!
上面三步就基本完成了相关dao层开发,使用的时候当作普通的类注入进入就可以了
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper UserMapper;
@Test
public void testInsert() throws Exception {
UserMapper.insert(new UserEntity("aa", "a123456", UserSexEnum.MAN));
UserMapper.insert(new UserEntity("bb", "b123456", UserSexEnum.WOMAN));
UserMapper.insert(new UserEntity("cc", "b123456", UserSexEnum.WOMAN));
Assert.assertEquals(3, UserMapper.getAll().size());
}
@Test
public void testQuery() throws Exception {
List<UserEntity> users = UserMapper.getAll();
System.out.println(users.toString());
}
@Test
public void testUpdate() throws Exception {
UserEntity user = UserMapper.getOne(3l);
System.out.println(user.toString());
user.setNickName("neo");
UserMapper.update(user);
Assert.assertTrue(("neo".equals(UserMapper.getOne(3l).getNickName())));
}
}
源码中controler层有完整的增删改查,这里就不贴了,附上大佬链接:一个很厉害的大佬博客,值得收藏!