您好,登錄后才能下訂單哦!
這篇文章主要介紹“MyBatis框架入門實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MyBatis框架入門實例分析”文章能幫助大家解決問題。
傳統的JDBC操作數據庫都是通過寫一個java類,在類中調用接口下的API執行相應的SQL,存在大量的硬編碼。試想,若是開發一個日活度高的系統,那SQL的變動的非常大,就要我們去相應的類中修改Java代碼,特別是進行查詢操作時需要我們手動將結果集封裝到實體類中,造成后期維護壓力山大
mybatis是一個優秀的基于java的持久層框架,它內部封裝了jdbc,使開發者只需要關注sql語句本身,而不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。mybatis通過xml或注解的方式將要執行的各種statement配置起來,并通過java對象和statement中sql的動態參數進行映射生成最終執行的sql語句
最后mybatis框架執行sql并將結果映射為java對象并返回。采用ORM思想解決了實體和數據庫映射的問題,對jdbc進行了封裝,屏蔽了jdbc api底層訪問細節,使我們不用與jdbc api打交道,就可以完成對數據庫的持久化操作
下面的配置文件在MyBatis的官網里都有,自己去復制過來粘貼到IDEA中更改對應的信息即可,我寫出來的目的是為了保證文章的順序流暢(大家莫煩~)
1.導入MyBatis相關坐標
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency>
2.數據庫中建立相應的數據表,并編寫一個表中字段對應的(Brand)實體類
3.編寫BrandMapper映射文件
<?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="mapper.BrandMapper"> //Mapper代理開發: //定義與SQL映射文件同名的Mapper接口, //并且將Mapper接口和SQL映射文件放置在同一目錄下 //設置SQL映射文件的namespace屬性為Mapper接口全限定名 //在Mapper接口中定義方法,方法名就是SQL映射文件中sql語句的id,并保持參數類型和返回值類型一致 <select id="selAll" resultType="sqlTest.Brand"> select * from mybatis; </select> </mapper>
4.編寫封裝查詢結果對象的接口
public interface BrandMapper {<!--{C}%3C!%2D%2D%20%2D%2D%3E--> public List<Brand> selAll(); }
5編寫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> <typeAliases> <package name="sqlTest"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--數據庫連接信息--> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/pyq?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="284650"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/userMapper.xml"/> <mapper resource="mapper/BrandMapper.xml"/> </mappers> </configuration>
6.編寫測試類,通過MyBatis實現查詢功能
public class MybatisDemo3 { public static void main(String[] args) throws IOException { //加載mybatis的核心配置文件,獲取sqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //獲取sqlSession工廠對象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //獲取sqlSession對象,來執行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //獲取BrandMapper接口的代理對象 BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); List<Brand> brands =brandMapper.selAll(); System.out.println(brands); //釋放資源 sqlSession.close(); } }
一頓操作下來好像也沒有簡單多少,其實不然,初次編寫的配置文件都是持久化的屬性,以后的變更只需要在接口里寫出相應的方法即可,避免了大量的硬編碼
在進行查詢操作時,為了解決SQL表中字段名稱和實體類中的屬性名不一致導致的不能自動封裝(查出為null)的問題,我們可以通過"起別名"也可以通過SQL片段來對查詢的數據進行定義修改,統一重復的操作
比如,在遇到表中的字段名稱不符合實體類中駝峰命名的規范時、要對查詢的數據進行范圍限定時都可以通過sql片段來實現,就像這樣:
<sql id="cut"> bracd_name as bracdName,company_name as compantName </sql> <select id="selAll" resultType="sqlTest.Brand"> select <include refid="cut"/> from mybatis; </select>
通過SQL片段實現了所謂的范圍查詢,單表重復起別名工作的統一,但是針對多次不同的查詢范圍我們需要多次定義SQL片段(不靈活),這也不是一件簡單的事
于是resultMap幫我們解決了這個問題:
<resultMap id="rm" type="brand"> <result column="bracd_name" property="bracdName"/> <result column="company_name" property="companyName"/> </resultMap> <select id="selAll" resultMap="rm"> select * from mybatis; </select>
通過id來設置唯一標識,type來指定映射類型,把表的列名column和實體類的屬性名通過result進行映射,在我們的SQL中直接查詢所有即可,進行不同的查詢操作也不需要重復定義片段或者取別名,就變得十分簡單
編寫Mapper接口,寫出添加的方法:
void add(Brand brand);
配置SQL映射文件:
<mapper> <insert id="add" > insert into mybatis(bracd_name,company_name,ordered,description,status) values (#{bracdName},#{companyName},#{ordered},#{description},#{status}); </insert> </mapper>
執行方法:
SqlSession sqlSession = sqlSessionFactory.openSession(); BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); brandMapper.add(brand);
編寫Mapper接口,寫出修改的方法:
void update(Brand brand);
編寫映射文件:
<update id="update" parameterType="sqlTest.Brand"> update mybatis set bracd_name=#{bracdName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} </update>
執行方法:
SqlSession sqlSession = sqlSessionFactory.openSession(); BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); int count= brandMapper.update(brand);
編寫Mapper接口,寫出刪除方法:
void deleteid(Brand brand);
編寫映射文件:
<delete id="deleteid" parameterType="brand"> delete from mybatis where id=#{id} </delete>
執行方法:
SqlSession sqlSession = sqlSessionFactory.openSession(); BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); int count= brandMapper.deleteid(id);
關于“MyBatis框架入門實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。