id爲主鍵,不自動遞增java
https://github.com/mybatis/mybatis-3/releasesmysql
解壓。git
勾選後,IDEA右側會有一個Database的工具,可在IDEA中直接操做數據庫。github
mybatis.jar是必需的。sql
lib是mybatis依賴的第三方jar包,根據須要選擇,嫌麻煩或者小白,可所有導入lib中的jar。數據庫
pdf是mybatis的文檔。apache
在src下新建文件 log4j.properties ,內容以下:session
# Global logging configuration log4j.rootLogger=ERROR, stdout,A # MyBatis logging configuration... log4j.logger.org.mybatis.example.BlogMapper=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n # File output... log4j.appender.A = org.apache.log4j.DailyRollingFileAppender log4j.appender.A.File = D:/log.txt log4j.appender.A.Append = true log4j.appender.A.Threshold = ERROR log4j.appender.A.layout = org.apache.log4j.PatternLayout log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n log4j.appender.A.encoding=UTF-8
可到 mybatis.pdf 8.1.1.2小節複製來修改。mybatis
package com.chy.pojo; public class Student { private int id; private String name; private int age; private int score; 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; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", score=" + score + '}'; } }
<?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.chy.mapper.StudentMapper"> <insert id="insertStudent" parameterType="Student"> INSERT INTO student_tb(id,name,age,score)VALUES (#{id},#{name},#{age},#{score}) </insert> <select id="queryById" parameterType="int" resultType="Student"> SELECT * FROM student_tb WHERE id=#{id} </select> <update id="updateStudent" parameterType="Student"> UPDATE student_tb SET name=#{name},age=#{age},score=#{score} WHERE id=#{id} </update> <delete id="deleteStudent" parameterType="int"> DELETE FROM student_tb WHERE id=#{id} </delete> </mapper>
能夠到mybatis.pdf 2.1.5小節複製來修改。oracle
咱們把映射文件都放在mapper包下,常以 實體類名+Mapper 命名。
<mapper>的namespace常設置爲此映射文件的路徑。
經過id調用相應的sql語句,parameterType指定參數類型,resultType指定要把結果集記錄映射到哪一種數據類型(只有<select>有這個屬性)。
#{}至關於sql語句中的佔位符?,{}中寫對應實體類的成員變量,會自動把參數轉換爲指定的成員變量。
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT username=chy password=abcd
對應信息要換爲本身的。
最好在文件名中註明是哪一種數據庫,若是公司要換數據庫,好比從mysql換爲oracle,好區分這個是哪一個數據庫的配置。
<?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 resource="mysql.properties"></properties> <!--指定日誌實現使用的是log4j--> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!--指定實體類--> <typeAliases> <typeAlias type="com.chy.pojo.Student" alias="Student"/> </typeAliases> <!--指定數據庫配置文件中的變量名--> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!--指定映射文件的位置--> <mappers> <mapper resource="com/chy/mapper/StudentMapper.xml"/> </mappers> <!-- Continue going here --> </configuration>
可到mybatis.pdf 2.1.2小節複製來改。
<configuration>的子元素是有必定順序的,順序不對會報紅。
package com.chy.test; import com.chy.pojo.Student; 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.Reader; public class Test { public static void main(String[] args) throws IOException { //加載mybatis的全局配置文件 String resources="mybatis-config.xml"; Reader reader = Resources.getResourceAsReader(resources); //根據配置文件構建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //經過SqlSessionFactory建立SqlSession SqlSession sqlSession=sqlSessionFactory.openSession(); //增 Student student = new Student(); student.setId(1); student.setName("chy"); //第一個參數對應映射文件中的id,經過id調用相應的sql語句,第二個參數是傳給sql語句的 sqlSession.insert("insertStudent", student); //修改數據庫(增、刪、改)後,須要commit()提交給數據庫,纔會同步本次會話作的修改。只有查詢的,能夠不commit()。 sqlSession.commit(); //關閉會話 sqlSession.close(); } }
//改 Student student = new Student(); student.setId(1); student.setName("chenghongyong"); sqlSession.update("updateStudent", student);
//查 Student student=sqlSession.selectOne("queryById", 1); System.out.println(student);
若是本次session期間,只有查詢,能夠不用commit()。
//刪 sqlSession.delete("deleteStudent", 1);
(1)版本聲明部分,最好不要複製其餘人的,若是你和ta用的mybatis庫版本不一樣,會出錯。最好到mybatis.pdf中去複製。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
log4j.properties這個文件名是約定的,不能本身取。
映射文件、數據庫配置文件須要在mybatis全局配置文件中指定,它們的文件名能夠本身取。
mybatis全局配置文件要在程序中指定,文件名能夠本身取。
配置文件必須放在資源根目錄下。常見的作法有2種:
注意是Resource Root,不是Source Root。
在裏面放配置文件:
mapper中的映射文件放哪兒都行,只要路徑配置對得上就ok。
log4j.properties必須直接放在資源根目錄下(不能放在子文件夾裏)。