Mybatis的xml+接口方式实现crud功能

Mybatis的xml+接口方式实现crud功能

    User.java

    package com.qfedu.pojo;

    import lombok.AllArgsConstructor;

    import lombok.Data;

    import lombok.NoArgsConstructor;

    @Data

    @NoArgsConstructor

    @AllArgsConstructor

    public class User {

        private int uid;

        private String username;

        private String password;

        private int age;

        private String addr;

    }

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

    IUserDao.java

    package com.qfedu.dao;

    import com.qfedu.pojo.User;

    import java.util.List;

    public interface IUserDao {

        /**

        *  查询所有的User对象

        * @return User对象的列表

        */

        List<User> getAllUsers();

        /**

        * 新增一个User对象

        * @param u 要新增的用户对象

        * @return 受影响的行数

        */

        int saveUser(User u);

    }

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

    UserMapper.xml

    <?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">

    <!--

        第二种实现mybatis的方式为:接口+xml方式

        这种方式有特别的要求

            1.  namespace必须是接口的全路径

            2.  每个节点的id必须是接口中的方法名

            3.  该接口中的方法不允许重载,否则namespace+id将不唯一

            4.  注意该接口中的增删改的方法的返回值,最好使用int

    -->

    <mapper namespace="com.qfedu.dao.IUserDao">


        <!--

            ID为接口中的方法名

        -->

        <select id="getAllUsers" resultType="User">

          select * from user

        </select>

        <insert id="saveUser" >

            insert into user values(null, #{username}, #{password}, #{age}, #{addr})

        </insert>

        <update id="updateUser">

            update user set username = #{username}, password =#{password}, age=#{age}, addr = #{addr} where uid = #{uid}

        </update>

    </mapper>

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

    SessionUtils.java

    package com.qfedu.util;

    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 java.io.IOException;

    public class SessionUtils {

        private static SqlSession mSession = null;

        private static SqlSessionFactory mFactory = null;

        static {

            try {

                mFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        /**

        * 获取SqlSession对象

        * @return

        */

        public static SqlSession getSession(){

            mSession = mFactory.openSession(true);

            return mSession;

        }

        /**

        * 关闭SqlSession对象

        * @param session 要关闭的SqlSession对象

        */

        public static void closeSession(SqlSession session){

            if(session != null){

                session.close();

                session = null;

            }

        }

    }

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

        31

        32

        33

        34

        35

        36

        37

        38

        39

        40

        41

        42

        43

        44

        45

    Mybatis.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节点

            里面有配置信息 分别是环境和映射

             其中环境里有datasource,里面有我们熟悉的连接数据库的四个字符串

    -->

    <configuration>

        <!--

            引入db的配置文件信息,后面用到的四个连接字符串就可以直接使用 ${}的方式来动态引入

        -->

        <properties resource="db.properties">

        </properties>

        <!--

            给当前mybatis项目添加日志功能,该STDOUT_LOGGING值的好处是不用添加第三方jar包就可以有日志的输出

        -->

        <settings>

            <setting name="logImpl" value="STDOUT_LOGGING"/>

        </settings>

        <typeAliases>

            <!--<typeAlias type="com.qfedu.pojo.Order" alias="abc" />-->

            <package name="com.qfedu.pojo" />

        </typeAliases>

        <environments default="development">

            <environment id="development">

                <transactionManager type="JDBC"/>

                <dataSource type="POOLED">

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

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

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

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

                </dataSource>

            </environment>

        </environments>

        <mappers>

            <mapper resource="com/qfedu/dao/UserMapper.xml"/>

        </mappers>

    </configuration>

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

        31

        32

        33

        34

        35

        36

        37

        38

        39

        40

        41

        42

        43

        44

        45

    TestUser.java

    package com.qfedu.pojo;

    import org.junit.Test;

    public class TestUser {

        @Test

        public void testUser(){

            User u = new User();

            u.setUid(1);

            u.setUsername("chenggang");

            u.setPassword("888888");

            u.setAddr("shenzhen");

            u.setAge(18);

            System.out.println(u);

        }

    }

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

    TestUserDao.java

    package com.qfedu.pojo;

    import com.qfedu.dao.IUserDao;

    import com.qfedu.util.SessionUtils;

    import org.apache.ibatis.session.SqlSession;

    import org.junit.After;

    import org.junit.Before;

    import org.junit.Test;

    import java.util.List;

    public class TestUserDao {

        private SqlSession session = null;

        @Before

        public void setUp(){

            session = SessionUtils.getSession();

        }

        @After

        public void tearDown(){

            SessionUtils.closeSession(session);

        }

        @Test

        public void testGetAllUsers(){

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

            List<User> users = mapper.getAllUsers();

            for (User u : users) {

                System.out.println(u);

            }

        }

        @Test

        public void testSaveUser(){

            IUserDao userDao = session.getMapper(IUserDao.class);

            User u = new User(17, "liuchang", "888888", 20, "guangzhou");

            int result = userDao.saveUser(u);

            System.out.println(result);

        }

    }

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

        31

        32

        33

        34

        35

        36

        37

        38

        39

        40

        41

        42

        43

        44

        45

        46

————————————————

版权声明:本文为CSDN博主「zpz2001」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zpz2001/article/details/104822936

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

推荐阅读更多精彩内容