• 初探MyBatis之HelloWorld(三)


    三、用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]
  • 相关阅读:
    log4net编译后命名空间找不到的问题
    网络流建模汇总
    零散知识点收集
    CentOS7中“ONBOOT”已设置为“yes”但开机后ens33不会自启动解决方案
    Hanoi塔问题
    Mosquitto用户名密码配置
    Activiti5 数据库表结构
    皮尔森相关系数(Pearson correlation coefficient)
    如何用研发流程搞垮一个团队?
    Java 编程规范
  • 原文地址:https://www.cnblogs.com/hyyq/p/6718494.html
Copyright © 2020-2023  润新知