idea+springboot+mybatis整合及注意

1:首先pom.xml导入jdbc和mybatis和druid相关依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.31</version>
</dependency>

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>

2:application.yml中加入

spring:
    datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/database?useUnicode\=true&amp;characterEncoding\=UTF-8
          username: root
          password: root
          type: com.alibaba.druid.pool.DruidDataSource
          filters: stat
          maxActive: 20
          initialSize: 1
          maxWait: 60000
          minIdle: 1
          timeBetweenEvictionRunsMillis: 60000
          minEvictableIdleTimeMillis: 300000
          validationQuery: select 'x'
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          poolPreparedStatements: true
          maxOpenPreparedStatements: 20

如果你是application.properties也是一样的,直接把冒号改成.就行,如:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.url=jdbc:mysql://localhost:3306/database?useUnicode\=true&amp;characterEncoding\=UTF-8

..............................................

依次如下

 

 

以下皆为案例演示,通过案例了解。

先贴User

package com.nework.course01.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Date;


public class User {
 
    private String uuid;
  
    private String username;
   
    private String password;
  
    private String isRoot;
 
    private Date registerDate;
 
    private Integer status;

    public User() {
    }

    public User(String uuid, String username, String password) {
        this.uuid = uuid;
        this.username = username;
        this.password = password;
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getIsRoot() {
        return isRoot;
    }

    public void setIsRoot(String isRoot) {
        this.isRoot = isRoot;
    }

    public Date getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(Date registerDate) {
        this.registerDate = registerDate;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "User{" +
                "uuid='" + uuid + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", isRoot='" + isRoot + '\'' +
                ", registerDate=" + registerDate +
                ", status=" + status +
                '}';
    }
}

 

 

3:以UserMapper为例

package com.nework.course01.mapper;

import com.nework.course01.domain.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;

import java.util.List;

@Mapper
@Component(value ="userMapper")
public interface UserMapper {

    @Select("select * from user where username=#{username}")
        //@Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
    User findUserByUsername(@Param("username")String username);

    @Select("select * from user where username=#{username} and password=#{password}")
    User findUserByUsernameAndPassword(@Param("username")String username,@Param("password")String password);

    @Select("select * from user")
    @Results({
            @Result(property = "uuid",  column = "uuid", javaType = String.class),
            @Result(property = "username", column = "username",javaType = String.class),
            @Result(property = "password", column = "password",javaType = String.class),
            @Result(property = "isRoot", column = "isRoot",javaType = String.class),
            @Result(property = "registerDate", column = "registerDate",javaType = java.util.Date.class),
            @Result(property = "status", column = "status",javaType = Integer.class),
    })
    List<User> findAllUser();

    @Insert("insert into user(uuid,username,password,isRoot,registerDate,status) " +
            " values(#{uuid}, #{username}, #{password},#{isRoot},#{registerDate},#{status})")
    void saveUser(@Param("user")User user);

    @Delete("delete from user where uuid =#{uuid}")
    void deleteUserByUUID(@Param("uuid")String uuid);

    @Update("update user set password=#{password},status=#{status} where uuid=#{uuid}")
    void updateUser(@Param("user")User user);
}

注意:这里UserMapper里的方法需要用@Param("形参名")进行修饰,不然会报错,如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'username' not found. Available parameters are [1, 0, param1, param2]

 

4:以UserService 为例

package com.nework.course01.service;

import com.nework.course01.domain.User;

import java.util.List;

public interface UserService {
    User findUserByUsername(String username);
    User findUserByUsernameAndPassword(String username,String Password);
    List<User> findAllUser();
    String saveUser(User user);
    void deleteUserByUUID(String uuid);
    void updateUser(User user);
}

5:以UserServiceImpl 为例

package com.nework.course01.service.impl;

import com.nework.course01.domain.User;
import com.nework.course01.mapper.UserMapper;
import com.nework.course01.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Transactional(readOnly = true)
    @Override
    public User findUserByUsername(String username) {
        return userMapper.findUserByUsername(username);
    }

    @Override
    public User findUserByUsernameAndPassword(String username, String Password) {
        return userMapper.findUserByUsernameAndPassword(username,Password);
    }

    @Transactional(readOnly = true)
    @Override
    public List<User> findAllUser() {
        return userMapper.findAllUser();
    }

    @Transactional
    @Override
    public String saveUser(User user) {
        userMapper.saveUser(user);
        return user.getUuid();
    }

    @Transactional
    @Override
    public void deleteUserByUUID(String uuid) {
        userMapper.deleteUserByUUID(uuid);
    }

    @Transactional
    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }
}

6:以SystemController 为例

package com.nework.course01.controller;


import com.nework.course01.domain.User;
import com.nework.course01.service.UserService;
import com.nework.course01.util.JsonResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping("/system")
public class SystemController {

    Logger logger = LoggerFactory.getLogger(getClass());

    @Resource(name = "userService")
    UserService userService;

    @GetMapping("/login")
    @ResponseBody
    public String login( @RequestParam String username, @RequestParam String password){
      User user= userService.findUserByUsernameAndPassword(username,password);
       logger.info("{}",user);
    }
 @GetMapping("/add")
 @ResponseBody
public void addUser() {
    User user = new User();
    user.setStatus(1);
    user.setUuid(UUID.randomUUID().toString().replace("-", ""));
    user.setRegisterDate(new Date());
    user.setPassword("123456");
    user.setIsRoot("0");
    user.setUsername("haha");
    String uuid = userService.saveUser(user);
    logger.info("增加成功:uuid:{}", uuid);
 }

}

这样基本就配置完成了,当然还有复杂的sql语句需要拼接,注解模式是难以操作的,该怎么做呢,等下次更新,谢谢。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目分为两个工程domain和manager,工程结构如下图所示,其中domain是Maven java工程主要完成对数据库的操作,manager是Maven Web工程,完成web访问 SQL脚本 /* Navicat MySQL Data Transfer Source Server : MySQL Source Server Version : 50022 Source Host : 127.0.0.1:3306 Source Database : zhaochao Target Server Type : MYSQL Target Server Version : 50022 File Encoding : 65001 Date: 2014-09-18 20:16:10 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL auto_increment, `user_name` varchar(250) default NULL, `user_passwd` varchar(250) default NULL, `user_email` varchar(250) default NULL, `user_type` int(11) default NULL, `create_time` datetime default NULL, `update_time` datetime default NULL, PRIMARY KEY (`id`), KEY `FK_Reference_1` (`user_type`), CONSTRAINT `FK_Reference_1` FOREIGN KEY (`user_type`) REFERENCES `t_user_type` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES ('1', 'admin', 'admin', '[email protected]', '1', '2014-09-18 14:26:26', '2014-09-18 14:26:56'); INSERT INTO `t_user` VALUES ('2', 'a', 'a', '[email protected]', '1', '2014-09-15 17:15:53', '2014-09-18 19:59:09'); INSERT INTO `t_user` VALUES ('5', 'b', 'b', '[email protected]', '1', '2014-09-18 20:01:06', '2014-09-18 20:04:38'); -- ---------------------------- -- Table structure for t_user_type -- ---------------------------- DROP TABLE IF EXISTS `t_user_type`; CREATE TABLE `t_user_type` ( `id` int(11) NOT NULL auto_increment, `type_name` varchar(250) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of t_user_type -- ---------------------------- INSERT INTO `t_user_type` VALUES ('1', '管理员'); INSERT INTO `t_user_type` VALUES ('2', '经理'); INSERT INTO `t_user_type` VALUES ('3', '主管');

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值