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&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&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语句需要拼接,注解模式是难以操作的,该怎么做呢,等下次更新,谢谢。