使用MyBatis连接数据库

(1)导入jar包

jar包

(2)需要四个文件

a、database.properties->资源文件,写入连接数据库需要的数据

b、config.xml->配置数据连接池,连接数据库使用

c、实体类名+Mapper.java->一个接口文件

d、实体类名+Mapper.xml->该文件实现了接口文件的方法

注意:实体类就是定义的Bean;c和d两文件最好放在同一个文件夹下;实体类名+Mapper.xml的作用效果:代替了DAO层,实现了接口中具体的方法


database.properties


config.xml


实体类名+Mapper.java


实体类名+Mapper.xml

(3)测试


测试代码

(4)以上使用的代码的合集(PS:比截图代码要全面)

League.java实体类


package cwu.chang.MyBaties;

public class League {

//使用Mybatis需要属性名与字段名完全匹配

public int lid;

public int lyear;

public String season;

public String title;

/*String test;

public String getTest() {

return test;

}

public void setTest(String test) {

this.test = test;

}*/

public League(){}

public int getLid() {

return lid;

}

public void setLid(int lid) {

this.lid = lid;

}

public int getLyear() {

return lyear;

}

public void setLyear(int lyear) {

this.lyear = lyear;

}

public String getSeason() {

return season;

}

public void setSeason(String season) {

this.season = season;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public League(int lid, int lyear, String season, String title) {

super();

this.lid = lid;

this.lyear = lyear;

this.season = season;

this.title = title;

}

@Override

public String toString() {

return "League [lid=" + lid + ", lyear=" + lyear + ", season=" + season

+ ", title=" + title + "]";

}

}


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>

<!-- 引用资源文件  resource=包名.类名-->

    <properties resource="cwu/chang/MyBaties/database.properties" />

<!-- 配置实体类  alias=类的别名,自定义    type=包名.类名(实体类的位置)-->

    <typeAliases>

        <typeAlias alias="league" type="cwu.chang.MyBaties.League" />

    </typeAliases>

    <environments default="simple">

        <environment id="simple">

            <transactionManager type="JDBC" />

            <dataSource type="POOLED">

            <!-- ${driver}为获取配置文件中name为driver的key值 -->

                <property name="driver" value="${driver}" />

                <property name="url" value="${url}" />

                <property name="username" value="${username}" />

                <property name="password" value="${password}" />

            </dataSource>

        </environment>

    </environments>


    <!-- 配置实力类名+Mapper.xml文件,因为该文件需要使用此资源文件来实现方法 -->

    <mappers>

        <mapper resource="cwu/chang/MyBaties/LeagueMapper.xml" />

    </mappers>

</configuration>



LeagueMapper.java(定义了增删查改)


package cwu.chang.MyBaties;

import java.util.List;

public interface LeagueMapper {

public List<League> getAllLeague();

    public League getLeagueById(int lid);

    public void createLeague(League league);

    public List<League> getLeagueByYear(int year);

    public void updateLeague(League league);

    public void deleteLeague(int lid);

}


LeagueMapper.xml(实现了接口的所有方法)


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

    "http://mybatis.org/dtd/mybatis-3.dtd">

<!-- namespace=包名。类名 -->

<mapper namespace="cwu.chang.MyBaties.LeagueMapper">

<!-- id=与.java文件中的方法名对应  parameterType=方法参数类型(这个方法没有,所以不要)

resultType=返回的结果集的数据类型(默认为list所以不需要写list<League>) -->

    <!-- <select id="getAllLeague" parameterType="int" resultType="league"> -->

    <select id="getAllLeague" resultType="league">

  <!-- #{lid}使用EL表达式获取参数的值 与参数名字一样 -->

        <!-- select * from league where lid = #{lid} -->

        select * from league

    </select>


    <select id="getLeagueById" parameterType="int" resultType="league">

        select * from league where lid = #{lid}

    </select>

    <insert id="createLeague" parameterType="league"

        useGeneratedKeys="true"    keyProperty="lid">

        insert into league (lyear, season, title)

            values (#{lyear}, #{season}, #{title})

    </insert>

    <update id="updateLeague" parameterType="league">

        update league set

            lyear  = #{lyear},

            season = #{season},

            title  = #{title} where lid = #{lid}

    </update>


    <delete id="deleteLeague" parameterType="int">

        delete from league where lid = #{lid}

    </delete>

    <select id="getLeagueByYear"

        parameterType="java.lang.Integer" resultType="league">

        select * from league where lyear = #{lyear}

    </select>

</mapper>


MyBatisTest.java


package cwu.chang.MyBaties;

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;

public class MyBatisTest {

    private static SqlSessionFactory sqlSessionFactory;


    static {

        try{

            String resource = "cwu/chang/MyBaties/config.xml";

            InputStream inputStream = Resources.getResourceAsStream(resource);

            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        } catch(IOException e) {

            e.printStackTrace();

        }

    }


    public static SqlSession getSession(boolean autoCommit) {

        return sqlSessionFactory.openSession(autoCommit);

    }


    public static void main(String[] args) {

    SqlSession sqlSession = MyBatisTest.getSession(true);

        LeagueMapper leagueMapper = sqlSession.getMapper(LeagueMapper.class);

        try{


        System.out.println("---------- 查询所有的League对象 -----------");

            List<League> leagues = leagueMapper.getAllLeague();

            for (League league : leagues) {

            System.out.println(league.getLid()+" "+league.getLyear()+" "+league.getSeason()+" "+league.getTitle());

}

            System.out.println("---------- 查询lid=1的League对象 -----------");

            League league = leagueMapper.getLeagueById(1);

            System.out.println(league);


            System.out.println("------------ 插入新建League对象-------------");

            league = new League(-1, 2016, "Winter", "2016 Winter League");

            leagueMapper.createLeague(league);

            System.out.println(league);


            System.out.println("------------ 查询现有League对象-------------");

            List<League> list = leagueMapper.getLeagueByYear(3);

            for (League l : list) {

                System.out.println(l);

            }

            System.out.println("------------ 修改现有League对象-------------");

            league.setSeason("Summer");

            league.setTitle("2016 Summer League");

            leagueMapper.updateLeague(league);

            System.out.println(league);

            System.out.println("------------ 删除现有League对象-------------");

            leagueMapper.deleteLeague(league.getLid());

            System.out.println("已删除league,lid=" + league.getLid());

        } catch(Exception e) {

            e.printStackTrace();

        } finally {

            sqlSession.close();

        }

    }

}


结果展示


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342