参考: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
传参方式
使用不同的传参方式:
使用@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
1
2
3
对于Insert语句中需要的参数,我们只需要在map中填入同名的内容即可,具体如下面代码所示:
Map
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);