前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis创建dao接口、Mybatis主配置文件、创建映射配置文件

Mybatis创建dao接口、Mybatis主配置文件、创建映射配置文件

原创
作者头像
韦恩少爷的背
修改2020-02-18 14:31:00
1.7K0
修改2020-02-18 14:31:00
举报
文章被收录于专栏:SSM框架学习SSM框架学习

初学Mybatis Part 2 创建dao接口、Mybatis主配置文件、创建映射配置文件

接续Part1

我们已经创建maven工程并导入坐标 接下来

一、创建实体类和dao的接口

1.创建的实体类

public class User implements Serializable{
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

getter/setter tostring这些自己生成

2.Serializable说明

一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。
 因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。
 而实际上,Serializable是一个空接口,没有什么具体内容,
 它的目的只是简单的标识一个类的对象可以被序列化。

3.创建dao接口

和一般的接口创建一样

举例写了几个方法

public interface IUserDao {
    List<User> findAll();
    void saveUser(User user);
    void updateUser(User user);
    void deleteUser(Integer userId);

二、Mybatis主配置文件

放在resource包下命名为SqlMapConfig.xml

1.Mybatis配置文件的约束

<?xml version="1.0" encoding="UTF-8"?>
<!--有申明有约束 copy的网上的mybatis配置文件的约束-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

2.Mybatis主配置

<!-- mybatis的主配置文件 -->
<configuration>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- default用于起一个选择的默认值 无论用什么下面都得有定义-->
        <!--要让environment起作用下面都得配置 自动弹出来的-->
        <!-- 配置mysql的环境-->
        <environment id="mysql">
            <!-- 配置事务的类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) 有三个类型 -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

同时需要写映射配置文件的位置,我弄在resources包下面的

    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <mapper resource="com/bruce/dao/IUserDao.xml"/>
    </mappers>
</configuration>

3.映射配置文件

即上述创建的IUserDao.xml文件进行约束和配置 其实就是Mapper的约束啦

<?xml version="1.0" encoding="UTF-8"?>
<!-- 偷的其他人的 -->
<!DOCTYPE mappe
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bruce.dao.IUserDao">

先强调下

mybatis的映射配置文件位置必须和dao接口包结构相同

就是比如说我的接口在java->com->bruce->dao->IUserDao.

那么你的映射配置文件也得在resources->com->bruce->dao->IUserDao.xml

加了约束后接着写方法

这里我把增删改查给出来

    <!-- 配置查询所有 -->
    <select id="findAll" resultType="com.bruce.domain.User">
    <!-- id(方法的名称)不能随便写名称 要写IUserDao.java里面的那个方法名称-->
    select * from user;
    --     如果不写resultType的话报错原因是不知道表和实体类封装到哪里去 不知道返回类型
    --     select 执行完了实现封装的时候会把结果集封装到User对象里面并把这些User对象添加到一个list
    </select>
    
    <!-- 保存用户 -->
    <insert id="saveUser" parameterType="com.bruce.domain.User">
        <!-- parameterType参数类型 -->
        <!-- 配置插入操作后,获取插入数据的id -->
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            <!-- keyProperty id的属性名称 对应实体类 keyColumn id的列名 对应表的
                 resultType 结果集类型 order什么时候执行获取id的操作-->
            select last_insert_id();
        </selectKey>
        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
    </insert>

    <!-- 更新用户 -->
    <update id="updateUser" parameterType="com.bruce.domain.User">
        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id =#{id};
    <!-- update的sql语句 -->
    </update>

    <!-- 删除用户 -->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{uid}
        <!--这个占位符可以随便取名字-->
    </delete>

环境搭建的注意事项:

1.貌似SqlMapConfig得直接放在resources下(这一点我不确定)

2. 创建IUserDao.xml和IUserDao.java时名称是为了和我们之前的知识保持一致。

在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mappe

所以:IUserDao 和 IUserMapper是一样的

3.在IDEA中创建目录的时候,它和包是不一样的

包在创建时:com.bruce.dao它时三级结构

目录在创建时:com.bruce.dao它是一级目录

所以最好是一个一个创建文件夹

4.mybatis的映射配置文件位置必须和dao接口包结构相同

5.映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名

6.映射配置文件的操作配置(比如写的那个select),id属性的取值必须是dao接口的方法名(取的findAll)

**3.4.5点都遵从了之后,我们在开发中就无须再写dao的实现类 写完接口我们的操作就结束了 剩下的功能mybatis给我们实现

至于为什么要这样硬要求,在入门案例中可以体现好处,开发效率大大提升

下一Part写入门案例

(点个赞吧求求了)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 初学Mybatis Part 2 创建dao接口、Mybatis主配置文件、创建映射配置文件
    • 一、创建实体类和dao的接口
      • 1.创建的实体类
      • 2.Serializable说明
      • 3.创建dao接口
    • 二、Mybatis主配置文件
      • 1.Mybatis配置文件的约束
      • 2.Mybatis主配置
      • 3.映射配置文件
    • 环境搭建的注意事项:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档