Mybatis 整合 Spring

MyBatis连接数据库以及操作数据库的实现

Mybatis的SqlSession对象就是用来记录服务器与数据库连接状态的,它的底层封装了JDBC连接,MyBatis的数据库操作,事务创建都是由Sqlsession来实现。连接池采用速度最快的Druid,以此可知

先创建Druid数据源,配置Druid数据源需要的驱动,数据库连接地址等属性,抽取到属性文件jdbc.properties

jdbc.properties
# 属性配置文件 用来配置数据源 这里是配置Druid连接池目前速度最快
# JDBC
# MySQL 5.x: com.mysql.jdbc.Driver
jdbc.driverClass=com.mysql.jdbc.Driver
#jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.connectionURL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=root

# JDBC Pool
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20

# JDBC Test
jdbc.testSql=SELECT 'x' FROM DUAL
配制数据源Druid---spring-context-druid.xml



    
    

    
    
        
        

        
        
        
        

        
        
        
        

        
        

        
        

        
        

        
        
        
        

        
        
    

Mybatis的配置----mybatis-config.xml



    
    
        
        

        
        

        
        

        
        

        
        

        
        

        
        

        
        

        
        

        
        

        
        

        
        
    

将数据源,Mybatis的配置,实体类所在的包,对象关系映射注入Mybatis创建SqlSession,同时还需要对持久层所在的包扫描---spring-context-mybatis.xml


    
    
    
        
        
        
        
        
        
        
        
    
    
    
        
    

关系对象映射---mapper/xx类Mapper.xml-----将实体类,mapper接口,数据库3者关联




    
  
      update
      user
      set
      /*用来判断设置完以后的值是否为空 不为空就才执行*/
      
          password=#{password},
      
      username=#{username},
      email=#{email},
      phone=#{phone}
      where
      id=#{id}
  

UserMapper接口类 持久层操作,不需要实现类
@Repository
public interface UserMapper {
    /**
     * 根据登录id获取用户实例
     * @param user
     * @return
     */
    public User login(User user);
    /**
     * 修改信息
     * @param user
     */
    public void updateInfo(User user);
}


Userserviceimpl实现层操作
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    /**
     * 登录验证
     * @param loginId
     * @param password
     * @return
     */
    @Override
    public User login(String loginId,String password) {
        User params=new User();
        //用户名 邮箱 电话 都可当成账号
        params.setUsername(loginId);
        params.setEmail(loginId);
        params.setPhone(loginId);
        User user = userMapper.login(params);
        /*密码加密
        String password = DigestUtils.md5DigestAsHex(loginPwd.getBytes());*/
        //先通过账号获取用户 再验证密码 一般加密验证 安全
        if(user!=null){
            if(password.equals(user.getPassword())){
                return user;
            }
        }
        return null;
    }
    /**
     * 修改信息先判断各项数据是否为空
     * @param user
     */
    @Override
    public String updateInfo(User user) {
        String check = check(user);
        //不为空 说明信息有空的不修改 返回客户端提示不能为空
        if(StringUtils.isNoneBlank(check)){
            return check;
        }
        //信息没有空的 可以修改 返回客户端提示修改成功
        // 不在service层直接返回修改成功 不然控制层尴尬 不好判断有没有进行修改操作 用null来表示进行了修改 跟check方法操作类似
        else{
            userMapper.updateInfo(user);
            return null;
        }
    }

    public String check(User user){
       if(user==null){
           return "信息不能为空";
       }
       else{
           if (StringUtils.isBlank(user.getUsername())){
               return "用户不能为空";
           }
           if (StringUtils.isBlank(user.getEmail())){
               return "邮箱不能为空";
           }
           if (StringUtils.isBlank(user.getPhone())){
               return "手机号不能为空";
           }
           return null;
       }
    }
}


你可能感兴趣的:(Mybatis 整合 Spring)