下边内容接上一篇博客
解决SQL映射文件的警告提示
产生原因: ldea和数据库没有建立连接,不识别表信息
解决方式:在ldea中配置MySQL数据库连接
我自己电脑上的idea版本是社区版的可以在idea中安装database navigator插件,安装后重启idea
![](https://img-blog.csdnimg.cn/img_convert/58dbaa04247c31807975a3d354b3956d.png)
![](https://img-blog.csdnimg.cn/img_convert/15aae8b4ccd1d1ab147cc1838449f517.png)
![](https://img-blog.csdnimg.cn/img_convert/0efed96e3b8b7f2553026f0a3f5f4cbe.png)
![](https://img-blog.csdnimg.cn/img_convert/12cba70ad1e12af242f1d9286141ffab.png)
测设链接成功后就表示idea与数据库连接上了。可以看到在idea中也可以查看数据库中的表了。
![](https://img-blog.csdnimg.cn/img_convert/1bcd2583345758b7598a38f5b6fa7f89.png)
与此同时,还可以在idea表中编辑sql语句对数据库进行操作
![](https://img-blog.csdnimg.cn/img_convert/467ae0fb5109ed2a0ebc0c46e10c1c8f.png)
Mapper代理开发
目的:解决原生方式中的硬编码、简化后期执行SQL
下面为使用Mapper代理开发前后的区别
![](https://img-blog.csdnimg.cn/img_convert/87916fe7e86686657f9456a38c41e40e.png)
![](https://img-blog.csdnimg.cn/img_convert/4e3dc0ac296a0fbe0ea71a03fbd9334c.png)
使用Mapper 代理方式完成入门案例
1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
在com.zxl中新建mapper.UserMapper的接口文件
![](https://img-blog.csdnimg.cn/img_convert/e1f05a4eaae54ed88236420da202fe78.png)
在资源文件下新建目录com/zxl/mapper文件将之前的UserMapper.xml文件移动到该目录下
![](https://img-blog.csdnimg.cn/img_convert/4ad79ee227540df22592f2be5a3d12e1.png)
2.设置SQL映射文件的namespace属性为Mapper接口全限定名
将Usermapper.xml文件中的namespace中的test改为Mapper接口全限定名
![](https://img-blog.csdnimg.cn/img_convert/73a573c44a671a1cae7cea05b011638c.png)
3.在 Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
在接口中定义selectAll方法,并且返回User对象的集合。
![](https://img-blog.csdnimg.cn/img_convert/9a657068cf7559085d52ab3d06567fe0.png)
有一点还需要改动,由于映射文件UserMapper文件路径发生变动,须在这里更正他的路径
![](https://img-blog.csdnimg.cn/img_convert/c2d85f3d51a09eba5e67d45f1de29dd9.png)
4.编码
1.通过SqlSession的getMapper方法获取Mapper接口的代理对象
2.调用对应方法完成sql的执行
复制之前的Demo文件为Demo2
![](https://img-blog.csdnimg.cn/img_convert/97a029a2c15d3a8532b687ae93522019.png)
以下为Demo2的代码信息
/*
* Mybatis 代理开发
* */
public class MyBatisDemo2 {
public static void main(String[] args)throws Exception {
//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
//List<User> users = sqlSession.selectList("test.selectAll");
//3.1获取UserMapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectAll();
System.out.println(users);
//4.释放资源
sqlSession.close();
}
}
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载
![](https://img-blog.csdnimg.cn/img_convert/0ef4f384fcb9518229e7886303bf71dc.png)