日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Mybatis 之应用篇】1_Mybatis简介、第一个Mybatis程序和增删改查在Mybatis中的使用方式

發布時間:2025/3/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Mybatis 之应用篇】1_Mybatis简介、第一个Mybatis程序和增删改查在Mybatis中的使用方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • Mybatis
        • 一、簡介
          • 1.持久化
          • 2.持久層
          • 3.為什么需要Mybatis?
        • 二、第一個Mybatis程序
          • 1.創建一個數據庫
          • 2.配置pom.xml文件
          • 3.創建實體類
          • 4.創建一個Mybatis工具類
          • 5.創建一個UserDao接口
          • 6.配置mybatis配置類
          • 7.配置UserMapper.xml
          • 8.測試類
        • 三、核心CRUD(增刪改查)
          • 1.namespace
          • 2.增insert
          • 3.刪delete
          • 4.查select
          • 5.改update
          • 6.分析錯誤
          • 7.萬能map
          • 8.思考題

Mybatis

環境:

  • JDK 1.8
  • MySQL 5.6.39
  • maven 3.3.39
  • IDEA 2018

回顧

  • JDBC
  • MySQL
  • java基礎
  • Maven
  • Junit

SMM框架:配置文件

一、簡介

  • MyBatis 是一款優秀的持久層框架
  • 它支持定制化 SQL、存儲過程以及高級映射。
  • MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
  • MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為數據庫中的記錄。
  • MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。
  • 2013年11月遷移到Github。

如何獲得Mybatis?

  • maven倉庫:

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version> </dependency>
  • Github : https://github.com/mybatis/mybatis-3/releases

  • 中文文檔:https://mybatis.org/mybatis-3/zh/index.html

1.持久化

數據持久化

  • 持久化就是將程序的數據在持久狀態和瞬時狀態轉化的過程
  • 內存:斷電即失
  • 數據庫(Jdbc),io文件持久化。
  • 生活:冷藏. 罐頭。

為什么需要需要持久化?

  • 有一些對象,不能讓他丟掉。

  • 內存太貴了

2.持久層

Dao層,Service層,Controller層….

  • 完成持久化工作的代碼塊
  • 層界限十分明顯。
3.為什么需要Mybatis?
  • 幫助程序猿將數據存入到數據庫中。
  • 方便
  • 傳統的JDBC代碼太復雜了。簡化。框架。自動化。
  • 不用Mybatis也可以。更容易上手。 技術沒有高低之分
  • 優點:
    • 簡單易學
    • 靈活
    • sql和代碼的分離,提高了可維護性。
    • 提供映射標簽,支持對象與數據庫的orm字段關系映射
    • 提供對象關系映射標簽,支持對象關系組建維護
    • 提供xml標簽,支持編寫動態sql。

最重要的一點:使用的人多!

Spring SpringMVC SpringBoot

二、第一個Mybatis程序

1.創建一個數據庫
2.配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <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"><modelVersion>4.0.0</modelVersion><groupId>com.xutao</groupId><artifactId>Mybaitis</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>mybatis-01</module></modules><!--導入依賴--><dependencies><!--mysql驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--mybatis--><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies><!--文件資源過濾問題--><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build> </project>
3.創建實體類
package entity;/*** @ClassName: User* @description:實體類* @author: FFIDEAL* @Date: 2020/5/14 16:08*/ public class User {private int id;private String name;private String pwd;public User() {}public User(int id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';} }
4.創建一個Mybatis工具類

這個工具類就是為了獲得mybatis-config.xml配置文件,過程需要進行如下三部:①找到配置文件的地址;②讀取地址;③構造一個數據庫對話工廠(SqlSessionFactory),實例化數據庫對話工廠sqlSessionFactory,該對象可以調用包含了所有操作數據庫的命令的方法

/*** @ClassName: MybatisUtil* @description:* @author: FFIDEAL* @Date: 2020/5/14 16:09*/public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory;static {try {//使用Mybatis第一步:獲取sqlSessionFactory對象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();} }
5.創建一個UserDao接口
import entity.User;import java.util.List;public interface UserDao {//獲取全部用戶List<User> getUserList(); }
6.配置mybatis配置類
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--每一個Mapper.xml都需要在Mybatis核心配置文件中注冊--><mappers><!--這是UserMapper在resources文件夾下的路徑,可以直接寫配置文件名--><!--<mapper resource="UserMapper.xml"/>--><!--當UserMapper在其他文件夾下時,則需要寫上路徑名,比如在到文件加下。(可以參考target中test中的路徑)--><mapper resource="dao/UserMapper.xml"/></mappers> </configuration>
7.配置UserMapper.xml

在這里要注意的是mapper標簽的namespace名字,要加路徑和編號;select標簽中的id屬性要調用UserDao接口中的方法名,resultType則是返回類型

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace=綁定一個對應的Dao/Mapper接口--> <mapper namespace="dao.UserDao"><!--select查詢語句--><select id="getUserList" resultType="entity.User">select * from mybatis.user</select> </mapper>
8.測試類
@Test public void test(){//第一步:獲得SqlSession對象SqlSession sqlSession = MybatisUtils.getSqlSession();//方式一:getMapperUserDao userDao = sqlSession.getMapper(UserDao.class);List<User> userList = userDao.getUserList();for (User user : userList) {System.out.println(user);}//關閉SqlSessionsqlSession.close(); }

三、核心CRUD(增刪改查)

1.namespace

namespace的報名要和Dao/mapper中的接口名一致

  • id : 就是對應的namespace中的方法名;
  • resultType:Sql語句執行的返回值!
  • parameterType : 參數類型!
2.增insert

接口要根據id名到Mapper.xml文件中查詢到相關的SQL語句

在接口UserDao接口中的方法

//添加一個用戶,增刪改返回值可以用voidint insertUser(User user)

在UserMapper.xml中的語句

<!--對象的屬性可以直接查詢--><insert id="insertUser" parameterType="entity.User">insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd})</insert>

測試類中的方法

@Testpublic void testInsertUser(){SqlSession sqlSession = MybatisUtil.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);int num = mapper.insertUser(new User(4, "王五", "123456"));if(num>0){System.out.println("插入成功");}//提交事務sqlSession.commit();sqlSession.close();}
3.刪delete

接口要根據id名到Mapper.xml文件中查詢到相關的SQL語句

在接口UserDao接口中的方法

//根據id刪除用戶void deleteById(int id);

在UserMapper.xml中的語句

<!--根據id刪除用戶--><delete id="deleteById" parameterType="int">delete from mybatis.user where id = #{id}</delete>

測試類中的方法

@Testpublic void testDeleteById(){SqlSession sqlSession = MybatisUtil.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);mapper.deleteById(2);//提交事務sqlSession.commit();sqlSession.close();}
4.查select

接口要根據id名到UserMapper.xml文件中查詢到相關的SQL語句

<mapper namespace="dao.UserDao"></mapper>

在接口UserDao接口中的方法

//獲取全部用戶List<User> getUserList();//根據id查詢用戶User getById(int id);

在UserMapper.xml中的語句

<!--select查詢語句--><select id="getUserList" resultType="entity.User">select * from mybatis.user</select><!--根據id查詢用戶--><select id="getById" parameterType="int" resultType="entity.User">select * from mybatis.user where id = #{id}</select>

測試類中的方法

@Test public void test(){//第一步:獲得SqlSession對象SqlSession sqlSession = MybatisUtil.getSqlSession();//方式一:getMapperUserDao userDao = sqlSession.getMapper(UserDao.class);List<User> userList = userDao.getUserList();for (User user : userList) {System.out.println(user);}//關閉SqlSessionsqlSession.close(); }@Test public void testGetById(){//從Mybatis工具類中獲得SqlSession實例SqlSession sqlSession = MybatisUtil.getSqlSession();//去找到接口,拿到對象UserDao sqlSessionMapper = sqlSession.getMapper(UserDao.class);//調用方法User user = sqlSessionMapper.getById(1);//查詢id為1的用戶System.out.println(user);//關閉實例,節約內存sqlSession.close();}
5.改update

接口要根據id名到Mapper.xml文件中查詢到相關的SQL語句

在接口UserDao接口中的方法

//修改一個用戶的名字void updateUser(User user);

在UserMapper.xml中的語句

<!--對象中的屬性,可以直接取出來,傳遞map的key--><update id="updateUser" parameterType="entity.User">update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id};</update>

測試類中的方法

@Testpublic void testUpdateUser(){SqlSession sqlSession = MybatisUtil.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);mapper.updateUser(new User(3,"趙六","45454545"));sqlSession.commit();sqlSession.close();}

注意:增刪改返回值可以用void,增刪改需要提交事務(commit)

6.分析錯誤
  • 標簽不要匹配錯
  • Mybatis-config中的resource 綁定mapper,需要使用路徑(斜杠)!
  • 程序配置文件必須符合規范!
  • NullPointerException,沒有注冊到資源!作用域問題
  • 輸出的xml文件中存在中文亂碼問題!
  • maven資源沒有導出問題!
7.萬能map

通過map只需要寫入需要的參數,如果參數是對象的話,則需要插入對象的所有信息

接口要根據id名到Mapper.xml文件中查詢到相關的SQL語句

在接口UserDao接口中的方法

//修改一個用戶的名字void updateUser(User user);

在UserMapper.xml中的語句

<insert id="addUser" parameterType="map">insert into mybatis.user(id, name, pwd) values (#{userid},#{username},#{password})</insert>

測試類中的方法

@Testpublic void testAddUser(){SqlSession sqlSession = MybatisUtil.getSqlSession();UserDao mapper = sqlSession.getMapper(UserDao.class);Map<String,Object> map = new HashMap<String, Object>();map.put("userid",5);map.put("username","陳七");map.put("password","23333");mapper.addUser(map);sqlSession.commit();sqlSession.close();}

Map傳遞參數,直接在sql中取出key即可! 【parameterType=“map”】

對象傳遞參數,直接在sql中取對象的屬性即可!【parameterType=“Object”】

只有一個基本類型參數的情況下,可以直接在sql中取到!

多個參數用Map,或者注解!

8.思考題

模糊查詢怎么寫?

  • Java代碼執行的時候,傳遞通配符 % %

    List<User> userList = mapper.getUserLike("%李%");
  • 在sql拼接中使用通配符!

    select * from mybatis.user where name like "%"#{value}"%"
  • 總結

    以上是生活随笔為你收集整理的【Mybatis 之应用篇】1_Mybatis简介、第一个Mybatis程序和增删改查在Mybatis中的使用方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。