日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

IDEA新建maven項(xiàng)目,使用mybatis操作數(shù)據(jù)庫(kù)完整過(guò)程

作者:魚(yú)跡 更新時(shí)間: 2023-12-20 編程語(yǔ)言

IDEA新建maven項(xiàng)目,使用mybatis操作數(shù)據(jù)庫(kù)完整過(guò)程

  • 一、IDEA新建maven項(xiàng)目
  • 二、配置mybatis
  • 三、創(chuàng)建表對(duì)應(yīng)實(shí)體類(lèi)
  • 四、創(chuàng)建mapper接口
  • 五、使用mybatis操作數(shù)據(jù)庫(kù)

前提: 這個(gè)教程是在maven項(xiàng)目中使用mybatis進(jìn)行數(shù)據(jù)庫(kù)操作,不是在spring boot項(xiàng)目中。

一、IDEA新建maven項(xiàng)目

  1. 打開(kāi)idea,新建maven項(xiàng)目
    在這里插入圖片描述
  2. 在pom文件中添加mybatis和mysql依賴
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

二、配置mybatis

  1. 在resources目錄下,新建jdbc.properties配置文件,然后輸入數(shù)據(jù)庫(kù)的配置項(xiàng),如下所示:
# mysql8的驅(qū)動(dòng)
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo
username=root
password=root
  1. 然后新建mybatis-config.xml文件,配置mybatis的數(shù)據(jù)庫(kù)連接,以及mapper映射文件,如下所示:
<?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>
    <!--  引入配置文件properties  -->
    <properties resource="jdbc.properties">

    </properties>
<!--    配置log4j-->
<!--    <settings>-->
<!--        <setting name="loglmpl" value="LOG4J"/>-->
<!--    </settings>-->

    <typeAliases>
        <package name="com.cc.demo.model"/>
    </typeAliases>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <!--數(shù)據(jù)庫(kù)地址-->
                <property name="url" value="${url}"/>
                <!--數(shù)據(jù)庫(kù)賬號(hào)-->
                <property name="username" value="${username}"/>
                <!--數(shù)據(jù)庫(kù)密碼-->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--映射文件路徑 對(duì)于其他的mapper,按照如下格式即可-->
        <mapper resource="mapper/SeatMapper.xml"/>
        <mapper resource="mapper/UserInfoMapper.xml"/>
    </mappers>
</configuration>

三、創(chuàng)建表對(duì)應(yīng)實(shí)體類(lèi)

  1. 然后根據(jù)數(shù)據(jù)庫(kù)表創(chuàng)建數(shù)據(jù)庫(kù)實(shí)體類(lèi),示例表創(chuàng)建語(yǔ)句如下所示:

create table userinfo
(
    userId    int auto_increment 
        primary key,
    username  varchar(50) not null,
    userSex   tinyint     not null,
    userPhone varchar(50) not null,
    email     varchar(50) not null
);

大家參照這個(gè)格式,然后使用自己的表即可
2. 然后根據(jù)數(shù)據(jù)庫(kù)表創(chuàng)建實(shí)體類(lèi),如下所示:

public class UserInfo implements Serializable {
    private Integer userId;

    private String username;

    private Byte usersex;

    private String userphone;

    private String email;

    public UserInfo() {
    }

    public UserInfo(Integer userId, String username, Byte usersex, String userphone, String email) {
        this.userId = userId;
        this.username = username;
        this.usersex = usersex;
        this.userphone = userphone;
        this.email = email;
    }

    private static final long serialVersionUID = 1L;

    public Integer getuserId() {
        return userId;
    }

    public void setuserId(Integer userId) {
        this.userId = userId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Byte getUsersex() {
        return usersex;
    }

    public void setUsersex(Byte usersex) {
        this.usersex = usersex;
    }

    public String getUserphone() {
        return userphone;
    }

    public void setUserphone(String userphone) {
        this.userphone = userphone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

四、創(chuàng)建mapper接口

  1. 根據(jù)自己想要的操作,創(chuàng)建mapper接口,這里只寫(xiě)了一個(gè)插入方法,如下所示:
@Mapper
public interface UserInfoMapper {
    int insert(UserInfo record);
}
  1. 創(chuàng)建該mapper對(duì)應(yīng)的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="com.cc.demo.mapper.UserInfoMapper">
  <resultMap id="BaseResultMap" type="com.zzj.webservlet.model.UserInfo">
    <id column="userId" jdbcType="INTEGER" property="userId" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="userSex" jdbcType="TINYINT" property="usersex" />
    <result column="userPhone" jdbcType="VARCHAR" property="userphone" />
    <result column="email" jdbcType="VARCHAR" property="email" />
  </resultMap>
  <sql id="Base_Column_List">
     userId, username, userSex, userPhone, email
  </sql>
  <insert id="insert" keyColumn="userId" keyProperty="userId" parameterType="com.cc.demo.model.UserInfo" useGeneratedKeys="true">
    insert into userinfo (username, userSex, userPhone, 
      email)
    values (#{username,jdbcType=VARCHAR}, #{usersex,jdbcType=TINYINT}, #{userphone,jdbcType=VARCHAR}, 
      #{email,jdbcType=VARCHAR})
  </insert>
</mapper>
  • namespace:這里填寫(xiě)對(duì)應(yīng)的mapper的路徑
  • insert:這一塊是編寫(xiě)的對(duì)應(yīng)的插入語(yǔ)句,
  • id是為了標(biāo)識(shí)方法,用于mybatis查找所調(diào)用的方法,
  • parameterType表示的是方法的參數(shù)類(lèi)型

注意: 以上就是mybatis的主要使用過(guò)程,mapper和對(duì)應(yīng)的xml映射文件結(jié)合使用,用來(lái)操作數(shù)據(jù)庫(kù)。mybatis也可以使用注解對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。但xml文件能夠?qū)崿F(xiàn)更為復(fù)雜的語(yǔ)句,所以一般我在開(kāi)發(fā)過(guò)程中是xml文件和注解配合使用的。

五、使用mybatis操作數(shù)據(jù)庫(kù)

上面只給出了mybatis的配置和xml文件的編寫(xiě),這里給出具體如何使用mybatis操作數(shù)據(jù)庫(kù)。具體代碼如下所示:

public class Test01 {
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
        //注意此處路徑不要寫(xiě)錯(cuò)
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
    public static void main(String[] args) throws IOException {
        //1、獲取SqlSessionFactory實(shí)例
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2、打開(kāi)一個(gè)會(huì)話
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            // 3、獲取接口的實(shí)現(xiàn)類(lèi)對(duì)象,會(huì)為接口自動(dòng)的創(chuàng)建一個(gè)代理對(duì)象,代理對(duì)象去執(zhí)行增刪改查方法
            UserInfoMapper mapper = openSession.getMapper(UserInfoMapper.class);
            int count = 0;
            // 4、調(diào)用接口的方法
            for (int i = 0; i < 30; i++) {
                if(i % 2 == 0){
                    count += mapper.insert(new UserInfo(i,"xiao" + i, (byte) 1,"156382260" +i,"xiao" + i +"@qq.com"));
                }else {
                    count +=mapper.insert(new UserInfo(i,"xiao" + i, (byte) 0, "156382260" +i,"xiao" + i +"@qq.com"));
                }
            }
            System.out.println(count);
            //7.提交事務(wù),核心配置文件中的事物方式為JDBC,因此需要手動(dòng)提交
            //這里需要加上commit(),否則能夠?qū)崿F(xiàn)功能,但不能將修改持久化到數(shù)據(jù)庫(kù),也就是說(shuō),沒(méi)有commit不會(huì)真正的改變數(shù)據(jù)庫(kù),而是會(huì)回滾的執(zhí)行前
            openSession.commit();
        } finally {
            //4、使用完畢后關(guān)閉會(huì)話
            openSession.close();
        }
    }
}

上面就是maven項(xiàng)目使用mybatis的過(guò)程,大概就是這樣一個(gè)模板。可以根據(jù)自己的需要進(jìn)行修改,而且上面的創(chuàng)建工廠和會(huì)話可以進(jìn)行封裝,不用每次都再去寫(xiě)這一部分的代碼。

原文鏈接:https://blog.csdn.net/weixin_45915647/article/details/134089860

  • 上一篇:沒(méi)有了
  • 下一篇:沒(méi)有了
欄目分類(lèi)
最近更新