abel533 / Mapper

Mybatis Common Mapper - Easy to use
https://mybatis.io
MIT License
7.32k stars 1.63k forks source link

主键策略失效 貌似是个BUG #888

Closed jornsky closed 1 year ago

jornsky commented 1 year ago

User.java

@Table(name = "user")
public class User {
    @Id
    @KeySql(useGeneratedKeys = true)
    private String id;
    private String name;
    private String age;

    public void setId(String id) {
        this.id = id;
    }
    public String getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }

    public void setAge(String age) {
        this.age = age;
    }
    public String getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

自定义UserMapper.java

@Repository
public interface UserMapper  extends MyMapper<User> {
        @Insert("INSERT INTO demo.`user` (name, age) VALUES(#{name}, #{age})")
        int insetUser(User user);
}

Service

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public void findAll(){
        System.out.println(userMapper.selectAll());
    }

    public int insertOne(User user){
        int id = userMapper.insetUser(user);
        System.out.println("----------------------------");
        System.out.println(id);
        System.out.println("----------------------------");
        return id;
    }

}

最后测试怎么测都是:

==>  Preparing: INSERT INTO demo.`user` (name, age) VALUES(?, ?)
==> Parameters: 飞机(String), 22(String)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@283ab206]
----------------------------
1
----------------------------
========================================
1
========================================
jornsky commented 1 year ago

yml配置

server:
  port: 8081
  servlet:
    context-path: /
  tomcat:
    uri-encoding: utf-8
mapper:
  mappers: com.springtest.MyMapper
spring:
  datasource:
    username: demo
    password: W5J5Mrd5CNGKh3fA
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://x.x.x.x:3306/demo
    type: com.alibaba.druid.pool.DruidDataSource

mybatis:
  #在yml文件中做了以下配置就无需做mybatis-config.xml配置,如果使用了mybatis-config.xml配置,就把下面两行注掉,将第三行配置打开
  mapper-locations: classpath:mybatis/mappers/*.xml
  type-aliases-package: com.springtest.pojo
  #config-location: classpath:mybatis-config.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false
jornsky commented 1 year ago

不知道为啥返回都是1....

abel533 commented 1 year ago

insert方法的返回值是sql影响的行数。。返回1,说明插入1行成功。

主键从user.getId()获取。

jornsky commented 1 year ago

Thank you @abel533