1、新建一個項目;
2、導入相關的依賴包;
3、配置mybatis主配置文件,連接信息和mapper位置等;
①mybatis主配置文件
<?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> <!--引入jdbc.properties配置文件--> <properties resource="jdbc.properties"></properties> <!--mybatis設置項--> <settings> <!--開啟日志,將日志信息打印到控制台--> <setting name="logImpl" value="STDOUT_LOGGING" /> <!--開啟緩存,默認開啟--> <setting name="cacheEnabled" value="true"/> <!--設置延遲加載--> <setting name="lazyLoadingEnabled" value="true"/> <!----> <setting name="aggressiveLazyLoading" value="false"/> </settings> <!-- 配置實體類別名 --> <typeAliases> <!-- 配置實體類所在包 --> <package name="com.seecen.mybatis3.pojo"/> </typeAliases> <!----> <!--數據庫連接池信息--> <environments default="oracledb"> <environment id="oracledb"> <!--配置事務管理方式,指定為使用jdbc的事務--> <transactionManager type="jdbc"></transactionManager> <!--指定數據源,type pooled指定為連接池--> <dataSource type="pooled"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置mapper.xml文件位置 --> <mappers> <!--指定mapper文件所在包--> <package name="com.seecen.mybatis3.mapper"/> </mappers> </configuration>
②連接信息jdbc:properties;
jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@localhost:1521:xe jdbc.username=sc2001 jdbc.password=sun #\u9A71\u52A8jar\u5305\u7684\u4F4D\u7F6E,\u5177\u4F53\u7684\u8DEF\u5F84\u3002\u9006\u5411\u751F\u6210\u4EE3\u7801\u65F6\u4F7F\u7528 driverClassPath=C:\\Users\\Administrator\\.m2\\repository\\com\\oracle\\ojdbc6\\11.2.0.3.0\\ojdbc6-11.2.0.3.0.jar
③配置配置文件generatorConfig.xml;
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" > <generatorConfiguration> <!--加載jdbc.properties配置文件--> <properties resource="jdbc.properties" /> <!--配置驅動jar包的位置--> <classPathEntry location="${driverClassPath}" /> <!-- context:生成一組對象的環境 id:必選,上下文id,用於在生成錯誤時提示 defaultModelType:指定生成對象的樣式 1,conditional:類似hierarchical; 2,flat:所有內容(主鍵,blob)等全部生成在一個對象中; 3,hierarchical:主鍵生成一個XXKey對象(key class),Blob等單獨生成一個對象,其他簡單屬性在一個對象中(record class) targetRuntime: 1,MyBatis3:默認的值,生成基於MyBatis3.x以上版本的內容,包括XXXBySample; 2,MyBatis3Simple:類似MyBatis3,只是不生成XXXBySample; introspectedColumnImpl:類全限定名,用於擴展MBG --> <context id="context1" targetRuntime="MyBatis3"> <!-- genenat entity時,生成toString --> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <!-- generate entity時,生成serialVersionUID --> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> <!--不生成注釋--> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--配置數據庫連接信息--> <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}" /> <!-- java模型創建器,是必須要的元素 負責:1,key類(見context的defaultModelType);2,java類;3,查詢類 targetPackage:生成的類要放的包,真實的包受enableSubPackages屬性控制; targetProject:目標項目,指定一個存在的目錄下,生成的內容會放到指定目錄中,如果目錄不存在,MBG不會自動建目錄 --> <javaModelGenerator targetPackage="com.seecen.mybatis.pojo" targetProject="src/main/java"> <!-- 設置是否在getter方法中,對String類型字段調用trim()方法 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成SQL map的XML文件生成器, 注意,在Mybatis3之后,我們可以使用mapper.xml文件+Mapper接口(或者不用mapper接口), 或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的話,這個元素就必須配置 targetPackage/targetProject:同javaModelGenerator --> <sqlMapGenerator targetPackage="com.seecen.mybatis.mapper" targetProject="src/main/java"></sqlMapGenerator> <!-- 對於mybatis來說,即生成Mapper接口,注意,如果沒有配置該元素,那么默認不會生成Mapper接口 targetPackage/targetProject:同javaModelGenerator type:選擇怎么生成mapper接口(在MyBatis3/MyBatis3Simple下): 1,ANNOTATEDMAPPER:會生成使用Mapper接口+Annotation的方式創建(SQL生成在annotation中),不會生成對應的XML; 2,MIXEDMAPPER:使用混合配置,會生成Mapper接口,並適當添加合適的Annotation,但是XML會生成在XML中; 3,XMLMAPPER:會生成Mapper接口,接口完全依賴XML; 注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER --> <javaClientGenerator targetPackage="com.seecen.mybatis.mapper" targetProject="src/main/java" type="XMLMAPPER" /> <table tableName="t_course" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>
這三個文件放入資源目錄下面;
我的目錄是這樣的,僅供參考:
4、在pojo中創建一個Product.java的實體類文件;
package com.seecen.mybatis3.pojo; import java.io.Serializable; public class Product implements Serializable { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Product{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
4、編寫Mapper對應的mapper.xml文件和接口,定義接口方法對應的sql語句;
ProductMapper文件和ProductMapper.xml文件:
package com.seecen.mybatis3.mapper; import com.seecen.mybatis3.pojo.Product; import java.util.List; public interface ProductMapper { int insert(Product product); int deleteById(Integer id); int update(Product product); Product selectById(Integer id); List<Product> selectAll(); }
<?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.seecen.mybatis3.mapper.ProductMapper"> <insert id="insert" parameterType="Product"> <selectKey keyProperty="id" order="BEFORE" resultType="integer"> select p_pro.nextval from dual </selectKey> insert into Product(id,name) values(#{id},#{name}) </insert> <update id="update" parameterType="Product"> update Product set name = #{name} where id=#{id} </update> <delete id="deleteById"> delete from Product where id=#{id} </delete> <select id="selectById" parameterType="integer" resultType="Product"> select * from Product where id=#{id} </select> <select id="selectAll" resultType="Product"> select * from Product </select> </mapper>
5、編寫dao層訪問接口Mapper,用來定義數據庫操作方法;
import com.seecen.mybatis3.mapper.ProductMapper; import com.seecen.mybatis3.pojo.Product; 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 java.io.IOException; import java.io.InputStream; import java.util.List; public class ProductTest { @Test public void Test() throws IOException { InputStream is= Resources.getResourceAsStream("mybatis.xml"); SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession=sqlSessionFactory.openSession(); ProductMapper mapper=sqlSession.getMapper(ProductMapper.class); //插入一條數據 Product product=new Product(); product.setName("三只松鼠"); int count=mapper.insert(product); System.out.println("插入記錄數:"+count); System.out.println(product); //刪除一條記錄 int count1=mapper.deleteById(1); System.out.println(count1); //查詢一條記錄 Product product1=mapper.selectById(2); System.out.println(product1); //修改一條記錄 product1.setName("一包薯片"); int i=mapper.update(product1); System.out.println("修改記錄數:"+i); //查詢所有的信息 List<Product> products=mapper.selectAll(); for (Product product2:products){ System.out.println(product2); } sqlSession.commit(); sqlSession.close(); is.close(); } }
最后,一定要多注意一些語法的規范或者要試着去查看錯誤信息,以便更好的修改錯誤。