pom.xmljava
注入要用到的依賴mysql
webweb
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
jdbcspring
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
mysql-connector-javasql
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope><!--runntime表示被依賴項目無需參與項目的編譯-->
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<!--xml版本、編碼-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--
xmlns -命名空間,相似包名,由於xml的標籤可自定義,須要命名空間來區分
xmlns:xsi -xml遵循的標籤規範
xsi -用來定義xmlschema的地址,也就是xml書寫時須要遵循的語法,兩部分組成,前面部分就是命名空間的名字,後面是xsd(xmlschema)的地址
-->
<modelVersion>4.0.0</modelVersion><!--描述這個POM文件是聽從哪一個版本的項目描述符-->
<groupId>com.example</groupId><!--項目組織惟一的標識符,和路徑差很少-->
<artifactId>springboot_mybatis</artifactId><!--項目的惟一的標識符,和項目的名字差很少-->
<version>0.0.1-SNAPSHOT</version><!--項目的版本-->
<packaging>jar</packaging> <!-- packaging: 打包的機制,如pom, jar, maven-plugin, ejb, war, ear, rar, par -->
<name>springboot_mybatis</name><!-- 項目的名稱, Maven 產生的文檔用 -->
<description>Demo project for Spring Boot</description><!-- 項目的描述, Maven 產生的文檔用 -->
<parent><!--繼承父類-->
<groupId>org.springframework.boot</groupId><!--項目組織惟一的標識符,和路徑差很少-->
<artifactId>spring-boot-starter-parent</artifactId><!--項目的惟一的標識符,和項目的名字差很少-->
<version>2.0.0.RELEASE</version><!--項目的版本-->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--出入編碼-->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version><!--java版本-->
</properties>
<dependencies><!--依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope><!--runntime表示被依賴項目無需參與項目的編譯-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope><!--test表示依賴項目僅僅參與測試相關的工做-->
</dependency>
</dependencies>
<build><!--編譯設置-->
<plugins><!--插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
User實體類數據庫
package com.example.springboot_mybatis.user; import org.springframework.stereotype.Repository; @Repository public class User { private int id_ = 0; private String username = ""; private String password = ""; public int getId_() { return id_; } public void setId_(int id_) { this.id_ = id_; } 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; } }
UserMapper.java mybatis sql映射apache
package com.example.springboot_mybatis.mapper.user; import com.example.springboot_mybatis.user.User; import org.apache.ibatis.annotations.*; import org.apache.ibatis.type.JdbcType; //使用註釋配置映射的sql語句,這樣能夠省掉映射器xml文件 @Mapper public interface UserMapper { @Select("select * from user_info where username=#{username}") public User 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 void register(User user); @Update({"update user_info ", "set password = #{password}", "where username = #{username}" }) public int update(User user); @Delete("delete from user_info where id_ = #{id_} and username = #{username}}") public int delete(User user); }
UserService.java 實現UserMapperspringboot
package com.example.springboot_mybatis.mapper.user; import com.example.springboot_mybatis.user.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; //聲明Bean,聲明UserService類是Spring管理的一個Bean @Service public class UserService { /* 注入Bean,把UserMapper的實體Bean注入到UserService中 required=false,找不到匹配Bean時也不報錯 之後用的時候就不用本身new對象,對象由spring管理 按類型進行 */ @Autowired(required=false) private UserMapper userMapper; public User getByusername(String username){ return userMapper.getByusername(username); } public void register(User user){ userMapper.register(user); } public int update(User user) { return userMapper.update(user); } public int delete(User user) { return userMapper.delete(user); } }
UserController
@Controller @ResponseBody public class UserController { /* 注入bean,按名稱進行 之後用的時候就不用本身new對象,對象由spring管理 */ @Resource private UserService userService; /* @RequestMapping註釋 定義Controller方法對應的映射url value 訪問相對地址 method 訪問方式 */ @RequestMapping(value = "/login", method = RequestMethod.POST) public LoginRespond login(@RequestBody LoginAccept loginAccept){ LoginRespond loginRespond = new LoginRespond(); Login login = new Login(); return login.login(loginAccept,loginRespond,userService); } @RequestMapping(value = "/register", method = RequestMethod.POST) public RegisterRespond register(@RequestBody RegisterAccept registerAccept){ RegisterRespond registerRespond = new RegisterRespond(); Register register = new Register(); return register.register(registerAccept,registerRespond,userService); } @RequestMapping(value = "/update", method = RequestMethod.POST) public UpdateRespond updateRespond(@RequestBody UpdateAccept updateAccept){ UpdateRespond updateRespond = new UpdateRespond(); Update update = new Update(); return update.update(updateAccept,updateRespond,userService); } }
LoginAccept
public class LoginAccept implements Accept{ private String id = ""; private User data; public User getData() { return data; } public void setData(User data) { this.data = data; } //代表該方法須要重寫,方便閱讀 @Override public String getId() { return id; } @Override public void setId(String id) { this.id = id; } }
LoginRespondData
public class LoginRespondData { private String Islogin; public String getIslogin() { return Islogin; } public void setIslogin(String islogin) { Islogin = islogin; } }
LoginRespond
public class LoginRespond implements Respond{ private String id = ""; private State state; private LoginRespondData data; @Override public String getId() { return id; } @Override public void setId(String id) { this.id = id; } public State getState() { return state; } public void setState(State state) { this.state = state; } public LoginRespondData getData() { return data; } public void setData(LoginRespondData data) { this.data = data; } }
Login
public class Login { public LoginRespond login(LoginAccept loginAccept,LoginRespond loginRespond,UserService userService){ loginRespond.setId(loginAccept.getId()); State state = new State(); LoginRespondData loginRespondData = new LoginRespondData(); 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); return loginRespond; } }
註冊 略mybatis