三、用SQL映射语句用注解,dataSource用xml(不推荐)。

综合上面两节(一个用xml,一个用annotation),发现一个好玩儿的,SQL映射用注解方式,然后还是得有两个xml配置文件。

如果你不知道SQL映射怎么用注解方式,查看这篇:http://www.cnblogs.com/hyyq/p/6718449.html

当SQL语句用注解方式映射后,原来的XML映射文件可以这样写:

这是原来用xml映射SQL语句的方式(这里的mapper节点的 namespace和select节点下的id是自己定义的,

后面执行sqlSession时会用到的,例如:

//1.唯一标识符(namespace+id)
//2.执行sql需要用到的参数
Employee employee = openSession.selectOne("yyc.mybatis.EmployeeMapper.selectEmp", 1);

):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yyc.mybatis.EmployeeMapper">
<!--
resultType:返回类型
#{id}:从传递过来的参数中获取id值
-->
<select id="selectEmp" resultType="yyc.mybatis.bean.Employee">
select id,last_name lastName,gender,email from tb1_employee where id = #{id}
</select>
</mapper>

当我们的SQL映射用注解实现后,我们可以将上面这个sql映射文件改一下

这时的namespace的值是一个具体存在的值,也就是作SQL映射的java接口:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yyc.mybatis.mapper.EmployeeMapper">
</mapper>

同样需要在全局配置文件中注册sql映射文件,如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<!-- 将我们写好的sql映射文件注册到全局配置文件中 -->
<mappers>
<!-- annotation映射配置方式 -->
<mapper resource="EmployeeMapperAnnotation.xml"/>
</mappers>
</configuration>

测试:

测试方法与初探MyBatis之HelloWorld(二)一样,这里为了区分,我们查询第二条数据:

@Test
public void testAnnotation() throws IOException{ SqlSessionFactory sqlSessionFactory = MySqlSessionFacoty.getSqlSessionFactory(); //2.获取sqlSession实例,能直接执行已经映射的sql语句
SqlSession openSession = sqlSessionFactory.openSession(); try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Employee employee = mapper.selectOne(2);
System.out.println(employee);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
openSession.close();
}
}

输出:

Employee [id=2, lastName=mark, gender=1, email=bb@163.com]

最新文章

  1. 分享在winform下实现模块化插件编程
  2. 【krpano】高德地图导航插件(源码+介绍+预览)
  3. C语言:使用命令行参数用字符串读取流和输出流进行文本文件的复制
  4. VIM使用技巧总结
  5. easyui的基本用法
  6. linux xampp eclipse xdebug 无法进入断点
  7. WP8触摸感应Manipulation的操作
  8. SQLyog之MySQL客户端的下载、安装和使用
  9. linux tar使用
  10. JavaScript 高级程序设计(第3版)笔记——chapter7:函数表达式
  11. GridView的RowCreated与RowDataBound事件区别
  12. WIN10-64+CUDA8.0+OpenCV3.0+VS2015配置
  13. php缓存模块apc可能导致php-fpm终止
  14. 项目实战——企业级Zabbix监控实战(一)
  15. 最近提交一个mysql5.7的bug,提醒自己以后注意写SQL要规范
  16. TCP 建立连接:三次握手
  17. 客户端热更新框架之UI热更框架设计(上)
  18. H5上传功能
  19. SpringMVC - 运行流程图及原理分析
  20. leecode第六十一题(旋转链表)

热门文章

  1. SQL之 Stuff和For xml path
  2. Distance matrix
  3. Django 之 CBV &amp; FBV
  4. Linux介绍和基本命令
  5. python多进程理论
  6. ACM中使用 JAVA v2. 1
  7. Java输入输出重定向代码
  8. KindEditor 4.1.11最新版 网站实例 包含使用方法 下载地址
  9. python之网络socket编程
  10. VC6.0 开发 64 位程序