基于Maven,MyBatis,MySQL的IDEA開發Java項目
- 前言
- MySQL
- Maven
-
- 1.Maven環境配置
- 2.Maven倉庫配置
- 3. IDEA下Maven配置
- 4.如何用Maven導入各種jar包
- MyBatis
-
- 1.進行mybatis核心配置
- 2.建立mybatis核心工具類
- 編寫測試代碼
-
- 建立實體類
- 建立dao層
- 建立測試類
前言
本專欄是在MySQL資料庫下,基于Maven項目管理工具,用MyBatis取代JDBC繁瑣化操作,在IDEA編輯器下進行Java項目開發
MySQL
MySQL就是一個資料庫,類似于微軟的SQL Sever資料庫服務。
對于MySQL的安裝基本操作可以檢視其他相關資源,這裡放出本人之前寫的MySQL基本指令行文法,之後的操作需要用到的時候可以進行檢視。
請點選
MySQL指令行基本文法
用MySQL指令行建立一個資料庫表,内容如下
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1cGRNRTRU5kMRpHW3BjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2IzNxMzN1QTMxEzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Maven
Maven就是一個Java項目管理工具,之前使用eclipse編寫代碼時,需要繁瑣的導入jar包,而Maven可以通過依賴集,自動下載下傳jar包,隻需要知道相關的你需要使用到的jar包即可。
1.Maven環境配置
Maven下載下傳成功後,首先需要配置Maven相關環境變量,可自行百度百科.
2.Maven倉庫配置
需要建一個本地倉庫,裡面用來存放Maven下載下傳的各種jar包;
Maven檔案夾下找到設定的XML,在裡面的本地倉庫路徑檔案填寫你建立的本地倉庫檔案夾
3. IDEA下Maven配置
在IDEA設定裡面,選擇Maven版本,使用之前設定好的settings.xml,選擇你建立好的本地倉庫檔案夾
4.如何用Maven導入各種jar包
1.建立你自己的基于maven的Java項目,注意組織名的編寫規範
2.找到你自己已經建立好的基于maven的Java項目,在pom.xml下進行相關操作。
xml就是一個語言,不做任何事情,就是用來傳輸,存儲資料![]()
基于Maven,MyBatis,MySQL的IDEA開發Java項目前言MySQLMavenMyBatis編寫測試代碼
建立一個dependencies集,下面就可以寫很多dependency,導入各種jar包,這裡我們看到,導入了一個mybatis的依賴,用來簡化資料庫操作,還有mysql的連接配接驅動用來連接配接資料庫,以及Junit測試。
如果你需要導入什麼包,隻需要進入https://www.mvnrepository.com/.
進行查找就行,找個下載下傳最多的
<dependencies>
<!---mybatis的依賴-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!---mysql連接配接驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!---單元測試-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
之後在右側選擇maven,重新整理一下,進行相關下載下傳。
到這裡,我們關于Maven的基本配置已經設定成功
MyBatis
MyBatis 是一款優秀的持久層架構。
它支援自定義 SQL、存儲過程以及進階映射。
MyBatis 免除了幾乎所有的 JDBC 代碼以及設定參數和擷取結果集的工作。
MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)為資料庫中的記錄。
什麼是持久層???
Java中有Dao層(持久層),Service層(業務邏輯實作),Controller層(隻負責接收使用者請求并傳回響應資料)
DAO層:
DAO層叫資料通路層,全稱為data access object,屬于一種比較底層,比較基礎的操作,具體到對于某個表的增删改查,也就是說某個DAO一定是和資料庫的某一張表一一對應的,其中封裝了增删改查基本操作,建議DAO隻做原子操作,增删改查。
Service層:
Service層叫服務層,被稱為服務,粗略的了解就是對一個或多個DAO進行的再次封裝,封裝成一個服務,是以這裡也就不會是一個原子操作了,需要事物控制。
Controler層:
Controler負責請求轉發,接受頁面過來的參數,傳給Service處理,接到傳回值,再傳給頁面。
1.進行mybatis核心配置
在resources下建立一個mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ii?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="edu/hqu/mybatis/dao/UserMapper.xml"/>
</mappers>
</configuration>
我們這裡要更改你想要連接配接的資料庫以及你之前mysql建立的賬号和密碼
<property name="url" value="jdbc:mysql://localhost:3306/ii?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<mappers>
<mapper resource="edu/hqu/mybatis/dao/UserMapper.xml"/>
</mappers>
1.就是這裡的ii改成别的你想要的資料庫名,以及下面的username和password都改成你的賬戶密碼,一般系統管理者都是root
2.mapper要和自己建立的mapper相關聯
mybatis的核心配置完成以後就可以和資料庫連接配接了
2.建立mybatis核心工具類
package edu.hqu.mybatis.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
// 擷取sqlSession的工廠
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}catch (IOException e){
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顧名思義,我們可以從中獲得 SqlSession 的執行個體。
// SqlSession 提供了在資料庫執行 SQL 指令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
需要拿到sqlSessionFactory,才能生産出執行sql的sqlSession
sqlSessionFactory是通過resources去讀取配置檔案加載成流,
然後在通過sqlSessionFactoryBuilder加載這個流然後建構成工廠
每次都去擷取比較麻煩,是以我們一般封裝成一個工具類
簡而言之,在mybatis核心工具類裡,首先要有sqlSessionFactory,之後要有sqlSession,在sqlSession裡可以有SQL指令
編寫測試代碼
建立實體類
package edu.hqu.mybatis.pojo;
public class User {
private int uid;
private String uname;
private String upassword;
public User(int uid, String uname, String upassword) {
this.uid = uid;
this.uname = uname;
this.upassword = upassword;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", uname='" + uname + '\'' +
", upassword='" + upassword + '\'' +
'}';
}
public int getUid() {
return uid;
}
public String getUname() {
return uname;
}
public String getUpassword() {
return upassword;
}
public void setUid(int uid) {
this.uid = uid;
}
public void setUname(String uname) {
this.uname = uname;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
}
這裡的實體類最好與資料庫的相關屬性一一對應
建立dao層
dao層裡面寫兩個,一個是UserMapper接口,一個是UserMapper.xml,實際上就是xml裡面寫SQL語句,接口用來調用xml
具體相關代碼如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="edu.hqu.mybatis.dao.UserMapper">
<!--綁定一個對應的mapper接口,我們這裡與UserMapper關聯-->
<!--全限定名-->
<!--确定絕對路徑-->
<select id="getAllUsers" resultType="edu.hqu.mybatis.pojo.User">
select * from user
</select>
<select id="getUserById" parameterType="int" resultType="edu.hqu.mybatis.pojo.User">
select * from user where uid=#{uid}
</select>
</mapper>
package edu.hqu.mybatis.dao;
import edu.hqu.mybatis.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
User getUserById(int uid);
}
parameterType="int"表示SQL語句是有參的,無參就不用加,
resultType="edu.hqu.mybatis.pojo.User"是指你的實體類傳回類型在哪
List getAllUsers();表示傳回結果是泛型,因為是alluser,都是user類型
User getUserById(int uid);表示有參傳回user類型
建立測試類
package edu.hqu.mybatis.dao;
import edu.hqu.mybatis.pojo.User;
import edu.hqu.mybatis.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserMapperTest {
@Test
public void testGetAllUsers() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> allUsers = mapper.getAllUsers();
for (User allUser : allUsers) {
System.out.println(allUser);
}
}
@Test
public void testGetUserById(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
}
}
我們建立兩個測試類,用來分别測試之前寫的GetAllUsers方法和GetUserById方法
**SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);**就是生成一個sqlSession和UserMapper互相關聯,這兩句在測試時候都要寫。
之後是具體的測試方法實作,
List allUsers = mapper.getAllUsers();
for (User allUser : allUsers) {
System.out.println(allUser);
}
User userById = mapper.getUserById(2);
System.out.println(userById);