下边内容接上一篇博客
解决SQL映射文件的警告提示
产生原因: ldea和数据库没有建立连接,不识别表信息
解决方式:在ldea中配置MySQL数据库连接
我自己电脑上的idea版本是社区版的可以在idea中安装database navigator插件,安装后重启idea
![](https://i-blog.csdnimg.cn/blog_migrate/c0494f820b7a81a699881836c482125f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1fc5bfb3df798667ec5007c8d0c1b7d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/36077cc36a2e6b356e856ecc1686b14b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/62ad794b92ea839307c16cb0a571bd54.png)
测设链接成功后就表示idea与数据库连接上了。可以看到在idea中也可以查看数据库中的表了。
![](https://i-blog.csdnimg.cn/blog_migrate/3e09903c22fb0bf616ac7b139371df42.png)
与此同时,还可以在idea表中编辑sql语句对数据库进行操作
![](https://i-blog.csdnimg.cn/blog_migrate/ff1b729aa52ac6547eb4f61206b3fd62.png)
Mapper代理开发
目的:解决原生方式中的硬编码、简化后期执行SQL
下面为使用Mapper代理开发前后的区别
![](https://i-blog.csdnimg.cn/blog_migrate/61102374cca0d34ffbd3024c5979d47e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/984db727dd74eb1749b3cef80f7c7397.png)
使用Mapper 代理方式完成入门案例
1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
在com.zxl中新建mapper.UserMapper的接口文件
![](https://i-blog.csdnimg.cn/blog_migrate/12a8834eb3b707e91d41568231855e4f.png)
在资源文件下新建目录com/zxl/mapper文件将之前的UserMapper.xml文件移动到该目录下
![](https://i-blog.csdnimg.cn/blog_migrate/d92761de217c09cbf9dd20d9e539e358.png)
2.设置SQL映射文件的namespace属性为Mapper接口全限定名
将Usermapper.xml文件中的namespace中的test改为Mapper接口全限定名
![](https://i-blog.csdnimg.cn/blog_migrate/cc6a75a55b7766709fce3edd0b20fde6.png)
3.在 Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
在接口中定义selectAll方法,并且返回User对象的集合。
![](https://i-blog.csdnimg.cn/blog_migrate/6b07dfafaa5a29bbf3d70c75b37f8aa4.png)
有一点还需要改动,由于映射文件UserMapper文件路径发生变动,须在这里更正他的路径
![](https://i-blog.csdnimg.cn/blog_migrate/d1d51502449325e21a0802645d8a8875.png)
4.编码
1.通过SqlSession的getMapper方法获取Mapper接口的代理对象
2.调用对应方法完成sql的执行
复制之前的Demo文件为Demo2
![](https://i-blog.csdnimg.cn/blog_migrate/7c1b9cb3f4e29ee9ace6e80c71b91ba7.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://i-blog.csdnimg.cn/blog_migrate/f0a339746e7bba8fb963716133eba55d.png)