Springboot教程,MyBatis入門讓它跑起來

 2023-10-06 阅读 31 评论 0

摘要:目錄 環境說明 創建Maven項目 創建數據庫表? 創建實體類 配置jar包坐標 連接數據庫 創建dao層接口 創建dao層接口的配置文件? 建立dao層與數據庫的聯系 創建SqlSession工廠 創建SqlSession實例測試 環境說明 在講解MyBatis之前,首先說一下JDBC,我相信你一定不陌

目錄

環境說明

創建Maven項目

創建數據庫表?

創建實體類

配置jar包坐標

連接數據庫

創建dao層接口

創建dao層接口的配置文件?

建立dao層與數據庫的聯系

創建SqlSession工廠

創建SqlSession實例測試


環境說明

在講解MyBatis之前,首先說一下JDBC,我相信你一定不陌生吧,JDBC就是用來對數據庫進行增刪改查操作的,依然記得那些繁瑣的SQL語句帶來的困擾,而今天的MyBatis就是為簡化SQL語句而生的,這里講解MyBatis的入門,就是讓它能在你的編譯器上跑起來,這里需要做一些準備,首先就是MySQL8.0,然后是JDK8,編譯器這里以IDEA為例,構建項目用的是Maven3.6.1

好了,環境統一好了之后,就開始步入正題吧,如果環境不一致,應該問題不大,但不確定一定能跑起來

創建Maven項目

首先用IDEA構建Maven項目,這里不用勾選Maven提供的模板,GroupId和ArtifactId如下

直接一路next即可,構建好之后,如下圖

Springboot教程、

創建數據庫表?

當構建好一個空的Maven項目之后,就可以開始搭建MyBatis的操作了,因為我們是要進行數據庫的操作,所以這里我們先在MySQL中建一個數據庫,并創建一個user表

創建數據庫

create database mybatis;

使用該數據庫

use mybatis;

創建user表

CREATE TABLE `user` (`id` int(11) NOT NULL,`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入三條用戶信息

insert into user values(1,'張三','123');
insert into user values(2,'李四','456');
insert into user values(3,'王二','789');

創建實體類

Mybatis框架,到此,數據庫中的表就建好了,然后我們需要去項目中創建相應的類,也就是我們的user實體類,放在java下的com.zhiying.pojo包下,如下圖

實體類如下

package com.zhiying.pojo;public class User {private int id;private String username;private String password;public User() {}public User(int id, String username, String password) {this.id = id;this.username = username;this.password = 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;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +'}';}
}

配置jar包坐標

接下來就是去Maven中的pop.xml文件,導入相應的jar包,這里導入一個mybatis的jar包,然后是mysql-connector-java的jar包,這里給出pop.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.zhiying</groupId><artifactId>speakmybatis</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency></dependencies>
</project>

連接數據庫

當jar包導好之后,我們開始對數據庫進行建立連接,建立連接的時候,需要在resource目錄下新建一個file文件,最好命名為

mybatis-config.xml,如下圖

idea怎么運行javaweb項目,

其中的內容如下,這里需要我們注意的是四個參量,分別是driver,url,username,password,具體如下

<?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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments>
</configuration>

創建dao層接口

數據庫也連好了,然后我們就開始進行dao層的處理了,也就是寫dao層的接口,這里在com.zhiying.dao下建一個UserMapper類截圖和代碼如下:

package com.zhiying.dao;import com.zhiying.pojo.User;import java.util.List;public interface UserMapper {List<User> getUserList();
}

創建dao層接口的配置文件?

寫好這個接口之后,按我們的JDBC就是寫這個接口的實現類,但是這里不用寫實現類了,寫一個對應的配置文件即可,這里在resources資源目錄下建一個UserMapper.xml文件,截圖和源碼如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhiying.dao.UserMapper"><select id="getUserList" resultType="com.zhiying.pojo.User">select * from user</select>
</mapper>

建立dao層與數據庫的聯系

MyBatis、配置好這個之后,你剛剛配置的resources目錄下的mybatis-config.xml文件就要修改一下了,原因就是你配置的mapper它需要知道呀,畢竟人家這配置的都是與數據庫打交道的東西嘛,好了,改完后的mybatis-config.xml如下

<?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><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?userSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="UserMapper.xml"/></mappers>
</configuration>

創建SqlSession工廠

好了,接下來就需要配置我們的SqlSessionFactory了,這個工廠故名思意就是用來創建SqlSession的,而這個SqlSession實例就是包含了執行sql命令所需的所有方法,好了,先說工廠怎么建吧,建工廠嘛,首先我們在java下建一個com.zhiying.utils包,并在這里建一個MybatisUtils類,該類就是用來創建SqlSession實例的,目錄和源碼如下

package com.zhiying.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 MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {//獲取sqlSessionFactory對象String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}catch (IOException e) {e.printStackTrace();}}//獲取SqlSession實例,其包含了面向數據庫執行SQL命令所需的所有方法public static SqlSession getSqlSession() {return sqlSessionFactory.openSession();}
}

創建SqlSession實例測試

到這里,工廠也建好了是不是要生產實例了,生產實例,這里我們在test目錄下進行生產測試,包和源碼如下

package com.zhiying.dao;import com.sun.org.apache.xpath.internal.SourceTree;
import com.zhiying.pojo.User;
import com.zhiying.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;import java.util.List;public class UserMapperTest {public static void main(String[] args) {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<User> userList = userMapper.getUserList();for (User user : userList) {System.out.println(user);}sqlSession.close();}
}

結果如下

idea如何運行javaweb程序。

這里是查詢操作,不需要提交事務,在進行增刪改操作的時候,記得提交事務,sqlSession.commit

都到這了,簡單演示一下吧,在dao層的UserMapper類下,創建一個接口,如下

package com.zhiying.dao;import com.zhiying.pojo.User;import java.util.List;public interface UserMapper {List<User> getUserList();int addUser(User user);
}

當然了需要配置UserMapper.xml文件,如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhiying.dao.UserMapper"><select id="getUserList" resultType="com.zhiying.pojo.User">select * from user</select><insert id="addUser" parameterType="com.zhiying.pojo.User">insert into user values (#{id},#{username},#{password});</insert>
</mapper>

好了開始測試吧,測試代碼如下

package com.zhiying.dao;import com.sun.org.apache.xpath.internal.SourceTree;
import com.zhiying.pojo.User;
import com.zhiying.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;import java.util.List;public class UserMapperTest {public static void main(String[] args) {SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//        List<User> userList = userDao.getUserList();
//        for (User user : userList) {
//            System.out.println(user);
//        }int num = userMapper.addUser(new User(4,"hzy","123"));sqlSession.commit(); //這句話在增刪改中不能少,System.out.println(num);sqlSession.close();}
}

結果如下,有點看不出來什么,再執行一下查詢如右圖

tomcat菜鳥教程。?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/122909.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息