第一步:這里現需要創建配置文件,創建文件名稱為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(); } }
最終效果如下(注:這里只是一部分的效果(只有查詢和添加),刪除和修改在數據庫中可以看見):
注:想要完成以上的效果,所要用的包,如下: