Spring Boot使用mybatis 入门

首先加入依赖

 
 
<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);

}


这样我们在service中就可以使用了


@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("数据将回滚");

}




 
 
 

猜你喜欢

转载自blog.csdn.net/WillJGL/article/details/75635683
今日推荐