mybatis 使用遇到的坑

 

参考:https://blog.csdn.net/winter_chen001/article/details/78623700 

参考:https://blog.csdn.net/u011229848/article/details/81750005

1.At least one base package must be specified

为扫描到mapper 添加 MapperScan()

2.Unsatisfied dependency expressed through field 

mybatis以来改为
 



    com.baomidou
    mybatis-plus-boot-starter
    2.2.0

3.java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

时区不统一导致所致

解决方案

为URL添加参数serverTimezone=UTC即可,这里的时区可以根据自己数据库的设定来设置(GMT/UTC )。

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

springboot中使用Mybatis注解配置详解

传参方式
使用不同的传参方式:

使用@Param
之前博文中的项目使用了这种简单的传参方式:

    @Insert("INSERT INTO T_USER(NAME, PASSWORD, PHONE) VALUES(#{name}, #{password}, #{phone})")
    int insert(@Param("name") String name, @Param("password") String password, @Param("phone") String phone);
1
2
3
理解: @Param中定义了name对应了sql中的#{name}, password 对应了sql中的#{password}, phone 对应了sql中的 #{phone}。

使用Map
通过Map对象来传递参数:

    @Insert("INSERT INTO T_USER(NAME, PASSWORD, PHONE) VALUES(" +
            "#{name, jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR}, #{phone, jdbcType=VARCHAR})")
    int insertByMap(Map map);
1
2
3
对于Insert语句中需要的参数,我们只需要在map中填入同名的内容即可,具体如下面代码所示:

Map map = new HashMap<>();
        map.put("name","王五");
        map.put("password","23423");
        map.put("phone", "13400000000");
        userMapper.insertByMap(map);
1
2
3
4
5
使用对象
如果我们使用普通的java对象作为查询条件的参数:


    @Insert("INSERT INTO T_USER(NAME, PASSWORD, PHONE) VALUES(#{name}, #{password}, #{phone})")
    int insertByUser(User user);
1
2
3
只需要语句中的#{name}、#{age}就分别对应了User对象中的name和age属性。

    User u = new User();
        u.setName("赵六");
        u.setPassword("12312312");
        u.setPhone("13888888888");
        userMapper.insertByUser(u);
1
2
3
4
5
增删改查
MyBatis针对不同的数据库操作分别提供了不同的注解来进行配置,在之前的示例中演示了@Insert,下面针对User表做一组最基本的增删改查作为示例:

    @Select("SELECT * FROM T_USER WHERE PHONE = #{phone}")
    User findUserByPhone(@Param("phone") String phone);

    @Insert("INSERT INTO T_USER(NAME, PASSWORD, PHONE) VALUES(#{name}, #{password}, #{phone})")
    int insertByUser(User user);

    @Update("UPDATE T_USER SET NAME = #{name}, PASSWORD = #{password} WHERE PHONE = #{phone}")
    void update(User user);

    @Delete("DELETE FROM T_USER WHERE ID = #{id}")
    void delete(Integer id);

你可能感兴趣的:(mysql,mybatis)