初探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 protected]]
时间: 2024-08-13 00:11:36

初探MyBatis之HelloWorld(三)的相关文章

初探MyBatis之HelloWorld(一)

官方地址:https://github.com/mybatis/mybatis-3 准备: 官方中文文档地址:http://www.mybatis.org/mybatis-3/zh/getting-started.html 1.导入MyBatis的jar包和mysql连接驱动(maven): <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.

初探MyBatis之HelloWorld(二)

二.不使用 XML 构建 SqlSessionFactory 不使用xml构建SqlSessionFactory的话,就要用java代码来连接数据库.我这里直接new DataSorce()接口实现getConnection()方法(不知道对不对,反正实验证明,可行). EmployeeDataSourceFactory.java: 1 package yyc.mybatis.util; 2 3 import java.io.PrintWriter; 4 import java.sql.Conn

MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(三)--优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org

【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

MyBatis学习 之 三、动态SQL语句

有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql. 下文均采用mysql语法和函数(例如字符串链接函数CONCAT). 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的s

Mybatis入门(三)——实例(一)

Mybatis入门(三) 数据库 public class Student { private String sno; public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getsName() { return sName; } public void setsName(String sName) { this.sName = sName;

SpringBoot中关于Mybatis使用的三个问题

SpringBoot中关于Mybatis使用的三个问题 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8495453.html 原本是要讲讲PostgreSQL的一些学习总结的,不巧的是最近一段时间的进度都是一些类似于加减乘除.位移.类型转换的稍显小儿科的一些内容,额~(? .?.? ?),这也不是什么问题,只是觉得这中间没什么终点和难点可讲的,也就暂时略过了~,这里首先说声抱歉啊,后续如有什么使用难点或有趣的地方一定拿出来讲讲????)?:额,每次开篇总

spring和mybatis整合(三)

一.方法: 1.导入jar包 2.配置数据信息 1)Spring加Mybatis的第一种整合方法 <!-- 描述数据源信息 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/

mybatis入门系列三之类型转换器

mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名,java类属性类型-数据库字段类型 前面两个都容易设置,但是第三点要求经常会出现java类型和数据库的存储类型不一样, 例如java类型是String,数据库中存储的是char.varchar.text 对于一般常见的类型对应,mybatis已经内部包含了类型转换器,使String类型的java属性