Mybatis篇二:MyBatis实战

 MyBatis实战

光看不练容易迷糊,先写个实例试试,在回去读文档,或许体会会多一些。

1、实例准备

jar包:

mybatis-3.4.5.jar(mybatis)

mysql-connector-java-5.1.21.jar(数据库驱动)

junit-4.4.jar(测试,不想用这个junit,用main方法测试也行)

项目结构

                  

数据库

-- 用户表结构
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userName` varchar(20) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
 
-- 初始化数据
INSERT INTO user (id,userName,age) VALUES(1,'one',25);
INSERT INTO user (id,userName,age) VALUES(2,'two',25);
INSERT INTO user (id,userName,age) VALUES(3,'three',25);

代码实例

 UserMapper对应的接口:

package com.lanhuigu.mybatis.mapper;
 
import com.lanhuigu.mybatis.entity.User;
/**
 * Mapper接口
 * @author yihonglei
 * @date 2018/11/20 19:00
 */
public interface UserMapper {
    /**
     * xml实现方式
     * @author yihonglei
     * @date 2018/11/20 19:00
     */
    User queryUserById(int id);
 
}

MyBatisInterfaceTest(基于接口实现的测试代码)

package com.lanhuigu.mybatis;
 
import com.lanhuigu.mybatis.entity.User;
import com.lanhuigu.mybatis.mapper.UserMapper;
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;
 
/**
 * Mapper基于接口测试
 * @author yihonglei
 * @date 2018/11/20 17:43
 */
public class MyBatisInterfaceTest {
    @Test
    public void testMyBatis() throws IOException {
        // 从SqlSessionFactoryBuilder中获取的SqlSessionFactory工厂实例
        SqlSessionFactory sqlSessionFactory = null;
        // 从SqlSessionFactory工厂中获取的sqlSession实例,包括了MyBatis操作数据库SQL命令的所有方法
        SqlSession session = null;
        try {
            // 1、MyBatis的配置文件路径,这里放在classpath下,相当于src下
            String resource = "mybatis-config.xml";
            // 2、读取mybatis配置文件,同时构建SqlSessionFactoryBuilder,然后获取SqlSessionFactory工厂实例
            // 使用MyBatis提供的Resources类加载mybatis的配置文件
            InputStream is = Resources.getResourceAsStream(resource);
            //构建SqlSessionFactory工厂
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
 
            // 3、从SqlSessionFactory工厂实例获取sqlSession,sqlSession中包含执行sql命令的所有方法
            session = sqlSessionFactory.openSession();
            /**
             * 映射sql的标识字符串:
             * com.lanhuigu.mybatis.mapper.UserMapper是UserMapper.xml文件中mapper标签的namespace属性的值,
             * queryUserById是UserMapper.xml文件select标签的id属性值,通过select标签的id属性值,
             * 通过这两个的组合就可以找到要执行的SQL
             */
            // 执行查询返回一个唯一user对象的sql,注意:"com.lanhuigu.mybatis.mapper.UserMapper.queryUserById"为映射sql的标识字符串
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = userMapper.queryUserById(1);
            System.out.println(user);
        } catch (Exception e) {
            System.out.println("e:" + e);
        } finally {
            session.close();
        }
    }
}

代码分析:

UserMapper userMapper = session.getMapper(UserMapper.class);

User user = userMapper.queryUserById(1);

使用对于给定语句能够合理描述参数和返回值的接口(比如说UserMapper.class),

现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。

参考博客:https://blog.csdn.net/yhl_jxy/article/details/51941545

Mybatis篇三:XML配置文件解析(上)_向上爬的小蜗牛的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值