pom.xml
注入要用到的依赖
web
org.springframework.boot
spring-boot-starter-web
jdbc
org.springframework.boot
spring-boot-starter-jdbc
mysql-connector-java
mysql
mysql-connector-java
runtime
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.example
springboot_mybatis
0.0.1-SNAPSHOT
jar
springboot_mybatis
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-jdbc
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
User实体类
packagecom.example.springboot_mybatis.user;importorg.springframework.stereotype.Repository;
@Repositorypublic classUser {private int id_ = 0;private String username = "";private String password = "";public intgetId_() {returnid_;
}public void setId_(intid_) {this.id_ =id_;
}publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}
}
UserMapper.java mybatis sql映射
packagecom.example.springboot_mybatis.mapper.user;importcom.example.springboot_mybatis.user.User;import org.apache.ibatis.annotations.*;importorg.apache.ibatis.type.JdbcType;//使用注释配置映射的sql语句,这样可以省掉映射器xml文件
@Mapperpublic interfaceUserMapper {
@Select("select * from user_info where username=#{username}")publicUser getByusername(String username);/*id id标识
value 值,内值的配置
property 变量名
column 对应数据库列名
javaType 变量类型
jdbcType 对应数据字段类型
id 是否主键*/@Results(id= "1",value ={
@Result(property= "id_",column = "id_",javaType = String.class,jdbcType = JdbcType.VARCHAR,id = true),
@Result(property= "username",column = "username",javaType = String.class,jdbcType =JdbcType.VARCHAR),
@Result(property= "password",column = "password",javaType = String.class,jdbcType =JdbcType.VARCHAR)
})
@Insert("insert into user_info(username,password) values(#{username},#{password})")/*useGeneratedKeys=true,MyBatis会使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键
keyProperty 变量名
keyColumn 对应数据库列名*/@Options(useGeneratedKeys=true,keyColumn="id_",keyProperty="id_")//设置id自增长
public voidregister(User user);
@Update({"update user_info ","set password = #{password}","where username = #{username}"})public intupdate(User user);
@Delete("delete from user_info where id_ = #{id_} and username = #{username}}")public intdelete(User user);
}
UserService.java 实现UserMapper
packagecom.example.springboot_mybatis.mapper.user;importcom.example.springboot_mybatis.user.User;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;//声明Bean,声明UserService类是Spring管理的一个Bean
@Servicepublic classUserService {/*注入Bean,把UserMapper的实体Bean注入到UserService中
required=false,找不到匹配Bean时也不报错
以后用的时候就不用自己new对象,对象由spring管理
按类型进行*/@Autowired(required=false)privateUserMapper userMapper;publicUser getByusername(String username){returnuserMapper.getByusername(username);
}public voidregister(User user){
userMapper.register(user);
}public intupdate(User user) {returnuserMapper.update(user);
}public intdelete(User user) {returnuserMapper.delete(user);
}
}
UserController
@Controller
@ResponseBodypublic classUserController {/*注入bean,按名称进行
以后用的时候就不用自己new对象,对象由spring管理*/@ResourceprivateUserService userService;/*@RequestMapping注释
定义Controller方法对应的映射url
value 访问相对地址
method 访问方式*/@RequestMapping(value= "/login", method =RequestMethod.POST)publicLoginRespond login(@RequestBody LoginAccept loginAccept){
LoginRespond loginRespond= newLoginRespond();
Login login= newLogin();returnlogin.login(loginAccept,loginRespond,userService);
}
@RequestMapping(value= "/register", method =RequestMethod.POST)publicRegisterRespond register(@RequestBody RegisterAccept registerAccept){
RegisterRespond registerRespond= newRegisterRespond();
Register register= newRegister();returnregister.register(registerAccept,registerRespond,userService);
}
@RequestMapping(value= "/update", method =RequestMethod.POST)publicUpdateRespond updateRespond(@RequestBody UpdateAccept updateAccept){
UpdateRespond updateRespond= newUpdateRespond();
Update update= newUpdate();returnupdate.update(updateAccept,updateRespond,userService);
}
}
LoginAccept
public class LoginAccept implementsAccept{private String id = "";privateUser data;publicUser getData() {returndata;
}public voidsetData(User data) {this.data =data;
}//表明该方法需要重写,方便阅读
@OverridepublicString getId() {returnid;
}
@Overridepublic voidsetId(String id) {this.id =id;
}
}
LoginRespondData
public classLoginRespondData {privateString Islogin;publicString getIslogin() {returnIslogin;
}public voidsetIslogin(String islogin) {
Islogin=islogin;
}
}
LoginRespond
public class LoginRespond implementsRespond{private String id = "";privateState state;privateLoginRespondData data;
@OverridepublicString getId() {returnid;
}
@Overridepublic voidsetId(String id) {this.id =id;
}publicState getState() {returnstate;
}public voidsetState(State state) {this.state =state;
}publicLoginRespondData getData() {returndata;
}public voidsetData(LoginRespondData data) {this.data =data;
}
}
Login
public classLogin {publicLoginRespond login(LoginAccept loginAccept,LoginRespond loginRespond,UserService userService){
loginRespond.setId(loginAccept.getId());
State state= newState();
LoginRespondData loginRespondData= newLoginRespondData();
User user_accept=loginAccept.getData();int id_ = 0;
String password_= "";
User user_sql=userService.getByusername(user_accept.getUsername());try{
id_=user_sql.getId_();
}catch(NullPointerException e){
state.setMsg("该用户不存在或密码错误");
loginRespondData.setIslogin("N");
}try{
password_=user_sql.getPassword();
}catch(NullPointerException e){
state.setMsg("该用户不存在或密码错误");
loginRespondData.setIslogin("N");
}if(password_.equals(user_accept.getPassword())){
state.setMsg("操作成功");
loginRespondData.setIslogin("Y");
}else{
state.setMsg("该用户不存在或密码错误");
loginRespondData.setIslogin("N");
}
loginRespond.setState(state);
loginRespond.setData(loginRespondData);returnloginRespond;
}
}
注册 略