一、開發環境的准備
總覽:
mybatis搭建過程:
1、導入jar
2、創建mybatis的核心(全局)配置文件mybatis-config.xml,並配置
3、創建映射文件XxxMapper.xml,並配置
4、創建mapper接口,實現兩個綁定:
(1)接口全限定名要和映射文件的namespace保持一致
(2)接口中方法名和SQL語句的id保持一致
5、獲取mybatis操作數據庫的會話對象SqlSession,通過getMapper()獲取接口的動態代理實現類
6、測試
詳細過程:
0、STS選擇Java視圖,新建Java Project.
1、 導入MyBatis框架的jar包、Mysql驅動包、log4j的jar包
myBatis-3.4.1.jar
mysql-connector-java-5.1.37-bin.jar
log4j.jar
mysql-connector-java-5.1.37-bin.jar
log4j.jar

2、創建mybatis的核心(全局)配置文件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"> <configuration> <environments default="development"> <!--environments: 設置連接數據庫的環境,default:設置默認使用的數據庫環境--> <environment id="development"> <!--environment: 設置某個具體的數據庫環境,id:數據庫環境的唯一標識--> <transactionManager type="JDBC" /> <!--之后會采用Spring的事務管理,type:JDBC或者MANAGED,JDBC表示最原始的方式處理事務--> <dataSource type="POOLED"> <!--之后會采用druid數據庫連接池,此為數據源,POOLED|UNPOOLED|JNDI--> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/ssm" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments>
<!--引入映射文件--> <mappers> <mapper resource="UserMapper.xml" /> </mappers> </configuration>
1)對於properties和一些不常用的設置:
<!-- <properties> <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> </properties> --> <!-- <properties>:設置或引入資源文件 resource:在類路徑下訪問資源文件 url:在網絡路徑或磁盤路徑下訪問資源文件 --> <properties resource="jdbc.properties"></properties> <!-- 將帶下划線的變量轉化為駝峰形式 user_Name -> userName --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <typeAliases> <!-- 為類型設置類型別名 type:Java 類型,若只設置type,默認的別名就是類型,且不區分大小寫 --> <!-- <typeAlias type="com.atguigu.bean.User" alias="u"/> --> <package name="com.atguigu.bean"/> </typeAliases>
2)Mybatis的xml配置文件中標簽的順序不能出錯
Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)
3)xml的提示功能:
-1)、聯網
-2)、配置:preference->xml->xmlCatalog-->add
(1)PUBLIC ID:-//mybatis.org//DTD Config 3.0//EN
(2)URI:http://mybatis.org/dtd/mybatis-3-config.dtd
-2)、配置:preference->xml->xmlCatalog-->add
(1)PUBLIC ID:-//mybatis.org//DTD Config 3.0//EN
(2)URI:http://mybatis.org/dtd/mybatis-3-config.dtd
3、創建映射文件XxxMapper.xml,並配置(如何操作數據庫,寫的是SQL語句,處理實體對象Xxx和表關系)
4、創建mapper接口,實現兩個綁定:
(1)接口全限定名要和映射文件的namespace保持一致
(2)接口中方法名和SQL語句的id保持一致
4、創建mapper接口,實現兩個綁定:
(1)接口全限定名要和映射文件的namespace保持一致
(2)接口中方法名和SQL語句的id保持一致
例如:接口UserMapper,和映射文件UserMapper.xml(實現調用接口中的方法就執行相應的SQL語句,並得到返回值)
package com.atguigu.mapper; import com.atguigu.bean.User; public interface UserMapper { User getUserByUid(String uid); }
<?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.atguigu.mapper.UserMapper"> <!-- <select>:定義查詢語句 id:設置SQL語句的唯一標示 resultType:結果類型,即實體類的全限定名 --> <select id="getUserByUid" resultType="com.atguigu.bean.User"> select uid,user_name,password,age,sex from user where uid = ${value} </select> </mapper>
5、獲取mybatis操作數據庫的會話對象SqlSession,通過getMapper()獲取接口的動態代理實現類
package com.atguigu.mapper; import static org.junit.Assert.*; import java.io.IOException; import java.io.InputStream; 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 org.junit.Test; import com.atguigu.bean.User; public class TestMybatis { @Test public void test() throws IOException { InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession = sqlSessionFactory.openSession(); //getMapper():會通過動態代理動態生成UserMapper的代理實現類 UserMapper mapper = sqlSession.getMapper(UserMapper.class); System.out.println(mapper.getClass().getName()); User user = mapper.getUserByUid("1"); System.out.println(user); //user_name ---> userName } }
6、測試