MyBatis+Mapper代理 学习
MyBatis
一、什么是 MyBatis
- MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发的。
持久层:负责将数据保存到数据库的那一层代码
JavaEE三层架构:表现层、业务层、持久层
JDBC 缺点:硬编码:需要注册驱动,获取链接;SQL语句
操作繁琐:需要手动设置参数;手动封装结果集
Mybatis 优点:免除了几乎所有JDBC的代码,以及设置参数和获取结果集的工作。
- 官网:MyBatis中文网
- 官网上由相关的文件文档,可以直接复制过来使用
二、 MyBatis简单入门
1.写xml配置文件:在src->右键->new->File,名字写为 mybatis-config.xml,然后去官网找,直接复制粘贴进来
第一块也可以不修改,直接创建一个 mysql.properties文件,将相关信息写进去,然后再在mybatis-config.xml中添加这一条语句就可以使用了。
2.写mysql.properties文件
3.映射文件的配置,找官网,写好之后就可以在刚刚的 mybatis-config.xml 映射文件配置那里写上该映射文件的路径了
这里也还需要根据自己的路径、数据库表单名字自行修改。 例如我的是User查询
因为我下载了mybatisx所以会有提示错误信息,建议都下载一下,后面处理会很方便
下载方式:file->settings->Plugins->查找 MyBatisX,然后下载就可以使用了
4.测试一下
获取SqlSessionFactory对象,也可以在官网上找到代码
public class Test { public static void main(String[] args) throws IOException { //1.加载mybatis的核心配置文件,获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2.获取SqlSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3.执行sql 前面一长串是命名空间+id(在UserMapper.xml里面可以找到) List<User> users=sqlSession.selectList("com.xxxx.mapper.UserMapper.selectAll"); System.out.println(users); //4.释放资源 sqlSession.close(); } }
想要在idea中配置数据库的配置信息
填入相关信息,但是注意URL后面要加上设置时区的这一条语句,不然可能会出现连接不上数据库的情况:原因:MySQL驱动中默认时区是UTC,与本地时间(中国)有时差所以连不上,需要修改时区。
然后,就可以在idea中看到数据库的信息啦
三、在MyBatis中加入Mapper代理
可以解决原生方式中的硬编码,可以简化后期执行SQL
需要定义一个Mapper接口,注意这个UserMapper.xml和UserMapper.java要在同一路径下
方法要和UserMapper.xml里面的id对应起来
在 mybatis-config.xml 中要修改一下这里
2.测试一下,和前面的结果一样
public class Test { public static void main(String[] args) throws IOException { //1.加载mybatis的核心配置文件,获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2.获取SqlSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3.执行sql 前面一长串是命名空间+id(在UserMapper.xml里面可以找到) // List<User> users=sqlSession.selectList("com.xxxx.mapper.UserMapper.selectAll"); //获取UserMapper接口的代理对象(这个过程是由mybatis内部实现的) UserMapper userMapper =sqlSession.getMapper(UserMapper.class); List<User> users=userMapper.selectAll(); System.out.println(users); //4.释放资源 sqlSession.close(); } }
多多练习,熟悉运行流程!