MyBatis學習(一)簡介及入門案例
阿新 • • 發佈:2017-09-18
結果集 提交 ace 支持 nag 實例 exce 空間 cti
1.什麽是MyBatis?
MyBatis是一個支持普通SQL查詢,存儲過程,和高級映射的優秀持久層框架。MyBatis去掉了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解進行配置和原始映射,以將接口和Java的POJO映射成數據庫中的記錄。
MyBatis作為持久層框架,主要思想是將程序中大量的SQL語句剝離出來,配置在配置文件中,以實現SQL的靈活配置。這樣的好處是將SQL語句和程序代碼分離,可以在不修改代碼的前提下,直接在配置文件中修改SQL。
2.MyBatis和Hibernate的區別。
Hibernate是以一種“全自動”的ORM框架,它實現了數據庫表和POJO之間的映射,以及SQL的自動生成。
MyBatis相對於hibernate來說,是一種“半自動化”的ORM框架,MyBatis的著力點在pojo和sql之間的映射,MyBatis雖然也實現了數據庫表和pojo之間的映射,但是並不能在運行期間生成SQL語句,需要程序員在配置文件中配置,將SQL需要的參數和返回的結果字段映射到指定POJO。
Mybatis以SQL開發的工作量和數據庫移植上的讓步,為系統設計提供了更大的自由空間。
3.入門案例
3.1創建一個項目,導入數據庫連接、MyBatis的jar包
3.2創建一個數據庫-mybatis,創建一個表t_user
CREATE TABLE `t_user` ( `id`int(11) NOT NULL AUTO_INCREMENT, `username` varchar(18) NOT NULL, `sex` char(2) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.3創建一個User類
public class User { private Integer id; private String username; private String sex; privateInteger age; public User(String username, String sex, Integer age) { super(); this.username = username; this.sex = sex; this.age = age; } public User() { super(); } //省略get、set方法 }
3.4配置這個pojo對應的UserMapper.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指用戶自定義的命名空間 --> <mapper namespace="com.dj.mapper.UserMapper"> <!-- id="save"是唯一的標示符 parameterType屬性指明插入時使用的參數類型 useGeneratedKeys="true"表示使用數據庫的自動增長策略 --> <insert id="save" parameterType="com.dj.pojo.User" useGeneratedKeys="true"> insert into t_user(username,sex,age) values(#{username},#{sex},#{age}) </insert> </mapper>
3.5配置mybatis-config.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"> <!-- XML 配置文件包含對 MyBatis 系統的核心設置 --> <configuration> <!-- 指定 MyBatis 所用日誌的具體實現 --> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!-- 環境配置,即連接的數據庫。 --> <environments default="mysql"> <environment id="mysql"> <!-- 指定事務管理類型,type="JDBC"指直接簡單使用了JDBC的提交和回滾設置 --> <transactionManager type="JDBC"/> <!-- dataSource指數據源配置,POOLED是JDBC連接對象的數據源連接池的實現。 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- mappers告訴了MyBatis去哪裏找持久化類的映射文件 --> <mappers> <mapper resource="com/dj/mapper/UserMapper.xml"/> </mappers> </configuration>
3.6編寫測試類
public class MyBatisTest { @Test public void save() throws Exception{ //讀取mybatis-config.xml InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); //初始化mybatis,創建一個sqlsessionfactory類的實例 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); //創建一個SqlSession實例 SqlSession sqlSession = factory.openSession(); //創建一個User對象 User user = new User("王五", "男", 12); sqlSession.insert("com.dj.mapper.UserMapper.save", user); sqlSession.commit(); sqlSession.close(); } }
運行後可以看到結果
要想控制臺顯示sql語句,要導入log4j的jar包和log4j.properties文件。
# Global logging configuration log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... log4j.logger.com.dj.mapper.UserMapper=DEBUG # 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
控制臺有如下顯示
源碼下載路徑:https://files.cnblogs.com/files/dj-blog/MyBatisTest.zip
MyBatis學習(一)簡介及入門案例