MyBatis03

學(xué)習(xí)了3種使用方式

案例鏈接(包含jar包): https://pan.baidu.com/s/1hykf9d2IEFoEPl8XlMWaqQ 提取碼: m342

方式三:

方式三就和前面兩個方式有點區(qū)別了,個人感覺方式三最方便快捷。

步驟1:新建com.hello.mapper包,mapper是映射器的意思,然后在這個包下新建一個xml文件CarMapper.xlm,具體內(nèi)容和前面基本一樣,但是還是有些地方不同的

<?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 接口相對應(yīng),需要填寫接口的權(quán)限名 -->

? <mapper namespace="com.hello.mapper.CarMapper">

? <!-- 查詢?nèi)啃畔?-->

? <!-- 在 MyBatis 中,返回值類型默認(rèn)是會自動轉(zhuǎn)成集合形式的。 -->

? <select id="selectAllCar" parameterType="java.lang.Integer" resultType="com.hello.pojo.Car">

? select * from car

? </select>

? <!-- 按照id查找 -->

? <select id="findCarById" parameterType="java.lang.Integer" resultType="com.hello.pojo.Car">

? select * from car where id = #{id}

? </select>

? <!-- 添加 -->

? <insert id="addCar" parameterType="com.hello.pojo.Car">

? insert into car(name, price) value(#{name}, #{price})

? </insert>

? <!-- 按照id刪除 -->

? <delete id="deleteById" parameterType="java.lang.Integer">

? delete from car where id = #{id}

? </delete>

? <!-- 更新 -->

? <update id="updateCar" parameterType="com.hello.pojo.Car">

? update car set name = #{name}, price = #{price} where id = #{id}

? </update>

? </mapper>

還需要新建一個相關(guān)的接口,名字一定要和xml名字一樣也就是CarMapper,并在xml文件中把它們關(guān)聯(lián)起來,也就是上面的<mappernamespace="com.hello.mapper.CarMapper"> ,這個接口里面的方法也是要和CarMapper.xml中的方法名字一樣,測試的時候就可以通過調(diào)接口里面的方法去調(diào)用xml文件里面對應(yīng)的方法了;然后還要把這個CarMapper.xml文件放到(反射)核心配置文件中也就是SqlMapConfig.xml文件;我們在后面的步驟一一實現(xiàn)。


步驟2:在com.hello.mapper包下新建一個接口,名字為CarMapper,接口里面的方法要和CarMapper.xml中的方法名一樣

package com.hello.mapper;

import java.util.List;

import com.hello.pojo.Car;

public interface CarMapper {

//查詢?nèi)?/p>

public List<Car> selectAllCar();

//按照id查找

public Car findCarById(Integer id);

//添加

public int addCar(Car car);

//按照id刪除

public int deleteById(Integer id);

//更新

public int updateCar(Car car);

}


步驟3:配置SqlMapConfig.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">

? <environment id="development">

? <!-- 事務(wù)管理器 -->

? <transactionManager type="JDBC"></transactionManager>

? <!-- 數(shù)據(jù)源 -->

? <dataSource type="POOLED">

? <property name="driver" value="com.mysql.jdbc.Driver"/>

? <property name="url" value="jdbc:mysql://localhost:3306/cz"/>

? <property name="username" value="root"/>

? <property name="password" value="123456"/>

? </dataSource>

? </environment>

? </environments>


? <!-- 對象映射-->

? <mappers>

?<!--?這個地方映射的不是一個文件了而是一個包,包里面的相關(guān)的xml文件(mapper?)都會反射到這里,所以所有映射文件都放到同一個mapper包里面,這樣就不用我們一個個文件映射了,直接映射一個包,它會自己去找 (大概是這個意思吧 ~)-->

? <package name="com.hello.mapper"/>? ?

? </mappers>

? </configuration>


步驟4:上面的都寫好了就可以進行測試了,一樣新建一個TestClass測試類,

package com.hello.Test;

import java.io.IOException;

import java.io.InputStream;

import java.util.List;

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.Before;

import org.junit.Test;

import com.hello.mapper.CarMapper;

import com.hello.pojo.Car;

public class TestClass {

private SqlSessionFactory factory;

@Before

public void getFactory() throws IOException{

// 1. 加載核心配置文件

InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");

// 2. 獲取 SqlSessionFactory

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

factory = builder.build(is);

}

@Test

public void run(){

獲取 SqlSession

SqlSession session = factory.openSession();

CarMapper mapper = session.getMapper(CarMapper.class);

//查詢?nèi)?/p>

/*List<Car> list = mapper.selectAllCar();

System.out.println(list);*/

//按照id查找

/*Car car = mapper.findCarById(2);

System.out.println(car);*/

//添加

/*Car car=new Car("垃圾車",10.0);

int i = mapper.addCar(car);

session.commit();//重要!提交數(shù)據(jù)!!

System.out.println(i);*/

//按照id刪除

/*int i = mapper.deleteById(8);

session.commit();

System.out.println(i);*/

//更新

/*Car car=new Car(6,"糞車",110.0);

int i = mapper.updateCar(car);

session.commit();

System.out.println(i);*/

}

}

上面的CarMapper mapper =session.getMapper(CarMapper.class);中的CarMapper.class指的就是我們建的接口,所以我們就可以通過mapper 調(diào)用接口中存在的方法,雖然說接口中的方法是沒有實現(xiàn)的,但是xml文件,已經(jīng)和這個接口關(guān)聯(lián)起來了,所以通過調(diào)用接中的方法就可以調(diào)用到xml文件中名字一樣的方法。就能完成我們的增刪改查了。

然后再增加一個小的知識點,就是我們在Car.xml或者是CarMapper.xml中有一個參數(shù)類型parameterType和返回值類型resultType,當(dāng)類型是類類型的時候,我們每次使用的時候需要把類權(quán)限路徑放上去,比如上面的parameterType="com.hello.pojo.Car",這樣子很麻煩,所以文明就可以在SqlMapConfig.xml中配置別名,如下

配置別名

別名配置好之后我們就可以在后面使用的時候直接使用別名Car了,如parameterType="Car"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 Mybatis入門 1.1 單獨使用jdbc編程問題總結(jié) 1.1.1 jdbc程序 上邊使...
    哇哈哈E閱讀 3,415評論 0 38
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,238評論 0 4
  • 關(guān)于高考的回憶,已經(jīng)很淡了。像云霧般連線,斷不斷之間。父母牽絆著,孩子緊張著。就連空氣里都浸滿了流動。
    我和世界沒有故事閱讀 138評論 0 1
  • 我是一個有價值的人 感恩貓小姐今天給了我一瓶化妝水,免費的喔! 感恩爸媽的身體非常健康 感恩我想坐窗戶位置,小姐姐...
    唐湯圓閱讀 90評論 0 0
  • 我真的好想你
    504528acf7c5閱讀 166評論 0 0

友情鏈接更多精彩內(nèi)容