如何在IDEA中使用mybatis創建項目並進行增刪改查操作


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();
    }
}

最后,一定要多注意一些語法的規范或者要試着去查看錯誤信息,以便更好的修改錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM