首先加入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
假如我们在数据库中有一个users表,现在要对这个表做操作
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(45) NOT NULL DEFAULT '',
`password` varchar(45) NOT NULL DEFAULT '',
`role` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8;
先新建一个 UserEntity类,这是一个数据实体类
import java.io.Serializable;
/**
* Created by Test on 2017/7/11.
*/
public class UserEntity implements Serializable {
private static final long serialVersionUID = -1L;
private int userid;
private String userName;
private String password;
private int role;
public void setUserid(int userid) {
this.userid = userid;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassword(String password) {
this.password = password;
}
public void setRole(int role) {
this.role = role;
}
public int getUserid() {
return userid;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
public int getRole() {
return role;
}
}
在建一个mybatis 的操作接口,在接口中定义了操作方法和mybatis 的配置
import com.xxx.mbe.user.entity.UserEntity;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* Created by Test on 2017/7/11.
*/
@Mapper
@Repository
@Transactional
public interface UserMapper {
@Select("SELECT * FROM users")
@Results({
@Result(property = "userid", column = "user_id"),
@Result(property = "userName", column = "user_name"),
@Result(property = "password", column = "password"),
@Result(property = "role", column = "role")
})
List<UserEntity> getAll();//这是一个列表获取方法,@Select中写sql语句,@Results中写数据库字段、类字段的映射关系
@Select("SELECT * FROM users WHERE user_id = #{userid}")
@Results({
@Result(property = "userid", column = "user_id"),
@Result(property = "userName", column = "user_name"),
@Result(property = "password", column = "password"),
@Result(property = "role", column = "role")
})
UserEntity getOne(int userid);
@Insert("INSERT INTO users(user_name,password,role) VALUES(#{userName}, #{password}, #{role})")
@Options(useGeneratedKeys = true, keyProperty = "userid", keyColumn = "user_id")
int insert(UserEntity userEntity);//对于插入方法,我们希望插入成功之后要得到数据库自增的userid,通过@Option配置,会把userid回写到userEntity中
@Update("UPDATE users SET user_name=#{userName},password=#{password},role=#{role} WHERE user_id =#{userid}")
int update(UserEntity userEntity);
@Delete("DELETE FROM users WHERE user_id =#{userid}")
int delete(int userid);
}
@Autowired
private UserMapper userMapper;
int result= userMapper.insert(userEntity);
int result = userMapper.delete(userID);
int result = userMapper.update(userEntity);
UserEntity u = userMapper.getOne(userID);
List<UserEntity> list = userMapper.getAll();
如果想使用事务下面这样就可以
@Transactional(rollbackFor = {IllegalArgumentException.class})
@Override
public void testTransactional() {
int result= userMapper.insert(userEntity);
userid=userEntity.getUserid();
result = userMapper.delete(lastUser.getUserid());
System.out.println("userid="+userid);
throw new IllegalArgumentException("数据将回滚");
}