Java——mybatis(使用mybatis對mysql數據庫進行增刪改查的操作)


第一步:這里現需要創建配置文件,創建文件名稱為log4j.properties(也可以自取),在所創建的log4j.properties中進行配置,配置如下:

log4j.rootLogger=DEBUG, Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

 

第二步:創建主配置文件,名為“SqlMapConfig.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">
            
            <!--解析:這里是添加驅動,還需要注意:這里我的mysql版本是8點多版本,所以在添加驅動時,還需要添加cj。
            如果版本不是那么高的話,驅動就這樣的寫(com.mysql.cj.jdbc.Driver),反正根據自己的來  -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                
                <!--這里屬於所訪問的地址,還是需要注意一下:下面是由於我的mysql是8點多的版本,需要添加“?serverTimezone=UTC”這個,
                因為這個是解決時區的問題,出現時區的問題,就加上,如果沒有,就不加 。介紹:day是我的數據庫,還是根據自己的來 -->
                <property name="url" value="jdbc:mysql://localhost:3306/day?serverTimezone=UTC" />
                
                <!--用戶  -->
                <property name="username" value="root" />
                
                <!--這是mysql的密碼,反正還是根據自己的mysql的密碼  -->
                <property name="password" value="123456" />
                
            </dataSource>
        </environment>
    </environments>
    <mappers> 
    <!--這里是主配置文件(SqlMapConfig.xml)調用映射文件(user.xml),配置如下  -->
        <mapper resource="user.xml" /> 
    </mappers> 
</configuration>

 

 

第三步:創建一個類,定義一些屬性,就是為了更好的理解。這里類名所取名為“text1”。

 

package com.mybatis.app;

public class text1 {
    private int id;
    private String name;
    private int age;
    
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "text1 [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
    
    public text1(String name,int age) {
        this.name=name;
        this.age=age;
    }
    public text1() {}
    
}
代碼如下

 

 

第四步:mybatis需要有映射文件,所以這步就是配置映射文件,我取名為“user.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">
 <!--作用:
 namespace:命令空間,用於隔離sql語句
   -->
   
<mapper namespace="test">
<!-- 作用: id是來用取別名
        parameterType定義輸入到sql中的映射類型
        resultType定義結果映射類型    
-->
    
    <!--查詢  -->
    <!--這是通過id來查詢 ,所以類型用整形 -->
    <select id="User" parameterType="int" resultType="com.mybatis.app.text1">
        select * from student where id=#{id}<!--#{id}是屬於占位符  -->
    </select>
    
    <!--通過名稱來查 ,所以類型就用字符串 -->
    <select id="Username" parameterType="String" resultType="com.mybatis.app.text1">
        select * from student where name like "%${name}%"
    </select>
    
    <!--添加  -->
    <insert id="addUser"  parameterType="com.mybatis.app.text1">
        insert into student(name,age) value(#{name},#{age})
    </insert>
    
    <!-- 刪除 -->
    <delete id="deleteUser" parameterType="int">
        delete from student where id=#{id}
    </delete>
    
    <!--修改  -->
    <!-- 想要進行修改,就需要查詢,所以先查詢,再修改 -->
    <select id="selectUser" parameterType="String" resultType="com.mybatis.app.text1">
        select * from student where name=#{name}
    </select>
    
    <update id="updateUser" parameterType="com.mybatis.app.text1">
        update student set name=#{name} where id=#{id}    
    </update>
</mapper>

 

 

第五步:創建測試類,代碼如下:

 

package com.mybatis.app;


import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class text {
    //任務:通過員工的ID來查找
    public static void main(String [] args) throws Exception {//mybatis配置文件
        String sql="SqlMapConfig.xml";//這里的SqlMapConfig.xml是我的主配置
        
        
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(sql);
        
        //創建會話工廠
        SqlSessionFactory sqlseesion=new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session =sqlseesion.openSession();
        
        //第一部分:查詢
        //通過ID來查詢
        text1 text =session.selectOne("test.User",2);//這里‘2’是查詢id為2,並返回所有信息,selectOne方法只能查詢一條數據
        System.out.println(text);
        //通過用戶名來查詢
        List<Object> text1= session.selectList("test.Username","李四");//selectList方法是用於集合,只要參數在集合中,則返回參數的信息。如果沒有在集合中,則返回空集合
        System.out.println(text1);
        
        
        //第二步分:添加
        text1 addname=new text1("王小山",25);
        int n= session.insert("test.addUser", addname);
        //提交事務
        //注:添加以后需要提交,不然在mysql中看不到所添加的數據
        session.commit();
        if(n>0) {     
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失敗!");
        }
        
        
        //第三部分:刪除
        session.delete("test.deleteUser", 8);//這里是通過id來進行刪除的
        //提交事務
        session.commit();
        //關閉,釋放資源
        session.close();
        
        
        //第四部分:修改
        //這是查詢包含姓名為‘王’的信息,這里可以改寫任意的條件
        List<text1> list=session.selectList("test.selectUser", "王");
        //isEmpty()方法是判斷集合是否為空
        if(!list.isEmpty()) {
            //使用迭代器,也可以理解是獲取集合中的所有元素
            Iterator<text1> ite=list.iterator();
            while (ite.hasNext()) {
                //next()方法可以理解為是獲取到第一行記錄
                text1 te=ite.next();
                te.setName("旺旺1");//這里是進行所要改寫的內容
                session.update("test.updateUser", te);
                //提交事務
                session.commit();                
            }
            
        }
        //關閉,釋放資源
        session.close();
    }
}

 

 

最終效果如下(注:這里只是一部分的效果(只有查詢和添加),刪除和修改在數據庫中可以看見):

 

 

 

 

 

注:想要完成以上的效果,所要用的包,如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM