使用Mybatis完成CRUD

使用Mybatis完成CRUD

下面总结Mybatis简单的实现增删改查,并且在学习中发现,总结的一些问题。

准备数据库

准备一个User的表
在这里插入图片描述
生产的语句如下:

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` datetime default NULL COMMENT '生日',
  `sex` char(1) default NULL COMMENT '性别',
  `address` varchar(256) default NULL COMMENT '地址',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

搭建Mybatis的运行环境

  1. 创建项目

首先新建一个项目,其中左边的一栏要选择Maven,然后一直下一步就可以完成创建。注意此处有一个GroupID 和ArtifactID,GroupID表示当前项目属于哪个组,例:com.mycom.myapp. ArtifactID表示当前项目在组中的唯一表示 例:myapp-util

  1. 引入驱动

创建完成后在pom.xml文件中引入驱动如下:
在这里插入图片描述

  1. 配置文件
    先复制一个log4j.properties的文件到resources的文件夹中。

    然后在java中创建User类,创建和数据库字段相同的变量,并生成相应的get set和toString。注意:此处的User类里面的变量需要和数据库里面的变量一直,否则就需要在之后的映射文件中添加resultMap映射。

    在resources中创建SqlMapConfig.xml文件。这个文件的主要作用就是配置连接数据库需要的driver url username password 以及映射文件的位置。如图:在这里插入图片描述
    这里需要注意的是:url的value值后面需要在写完数据库地址后需要加上?userUnicode=true&characterEncoding=utf8否则之后更新到数据库里面的数据可能会是问号。

    配置好了之后在resources在创建一个IUserDao.xml的映射文件,用于记录sql语句和执行方法的对应关系。如图:

    最后再JAVA里面在创建一个IUserDao的接口用来写各种执行方法的名称。

创建测试文件

在环境创建好了以后,在test-java中创建一个MybatisTest的一个测试文件。在这个类中,先定义:

private InputStream in;
private SqlSession sqlSession;
IUserDao userDao;
@Before //执行前先运行
public void init() throws IOException{
//1.读取配置文件,生成字节输入流
in = Resources.getResourceAsStream(“SqlMapConfig.xml”);
//2.获取sqlsession对象
sqlSession = new SqlSessionFactoryBuilder().build(in).openSession();
//3.获取dao的代理对象
userDao = sqlSession.getMapper(IUserDao.class);
}
@After
public void destroy () throws IOException {
// 提交事务
sqlSession.commit();
in.close();
sqlSession.close();
}

实现查询功能

在配置好环境以后,开始实现功能。在IUserDao接口中写下查询的方法名称。

// 查询所有的用户
List findAll();

然后在IUserDao.xml中写下映射关系:

<mapper namespace="com.itheima.dao.IUserDao">
        <select id="findAll"  resultType="com.itheima.domain.User">
        select  * from user;
    </select>
    </mapper >

注意此处的namespace + id 组成可以精确查找到接口中的方法
resultType表示返回的类型,parameterType表示参数类型。另外还有resultMap和parameterMap用于User类的变量名称和数据库名称不一样的时候,需要指定对应关系,对应关系如图:

在这里插入图片描述
之后在MybatisTest的测试文件中,加入执行语句:

    //查询所有
    @Test
    public void testFindAll() throws IOException {

        //执行查询所有的方法
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

然后右键执行。

实现插入功能

接下来实现插入功能,同理现在IUserDao接口中添加添加方法

//插入
void Insert(User user);

然后在IUserDao.xml中添加映射关系:

    <insert id="Insert" parameterType="com.itheima.domain.User">
        INSERT INTO user (username, address, sex, birthday) VALUE (#{username}, #{address}, #{sex}, #{birthday});
    </insert>

此处注意:后面的例如#{address}需要和User里面的变量一致。并且注意格式

最后在MybatisTest的测试文件中,加入执行语句:

    //插入
    @Test
    public void testInsert(){
        System.out.println(new Date());
        User user = new User();
        user.setAddress("绵阳");
        user.setBirthday(new Date());
        user.setSex("女");
        user.setUsername("测试姓名1");
        userDao.Insert(user);
    }

注意:此处是传的参数是一个user类,先定义好然后在传入。

其他的更新和删除和以上大同小异。需要注意的是模糊查询的时候建议传入例如:%王% 使用这样的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值