初探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.Connection;
 5 import java.sql.DriverManager;
 6 import java.sql.SQLException;
 7 import java.sql.SQLFeatureNotSupportedException;
 8 import java.util.logging.Logger;
 9
10 import javax.sql.DataSource;
11
12 public class EmployeeDataSourceFactory {
13
14     public static DataSource getEmployeeDataSorce(){
15         DataSource ds=new DataSource() {
16
17             public <T> T unwrap(Class<T> iface) throws SQLException {
18                 // TODO Auto-generated method stub
19                 return null;
20             }
21
22             public boolean isWrapperFor(Class<?> iface) throws SQLException {
23                 // TODO Auto-generated method stub
24                 return false;
25             }
26
27             public void setLoginTimeout(int seconds) throws SQLException {
28                 // TODO Auto-generated method stub
29
30             }
31
32             public void setLogWriter(PrintWriter out) throws SQLException {
33                 // TODO Auto-generated method stub
34
35             }
36
37             public Logger getParentLogger() throws SQLFeatureNotSupportedException {
38                 // TODO Auto-generated method stub
39                 return null;
40             }
41
42             public int getLoginTimeout() throws SQLException {
43                 // TODO Auto-generated method stub
44                 return 0;
45             }
46
47             public PrintWriter getLogWriter() throws SQLException {
48                 // TODO Auto-generated method stub
49                 return null;
50             }
51
52             public Connection getConnection(String username, String password) throws SQLException {
53                 // TODO Auto-generated method stub
54                 return null;
55             }
56
57             public Connection getConnection() throws SQLException {
58                 try {
59                     Class.forName("com.mysql.jdbc.Driver");
60                     String url="jdbc:mysql:///mybatis";
61                     String user="root";
62                     String password="123";
63                     Connection connection = DriverManager.getConnection(url, user, password);
64                     return connection;
65                 } catch (ClassNotFoundException e) {
66                     e.printStackTrace();
67                 }
68                 return null;
69             }
70         };
71         return ds;
72     }
73 }

在第一种时,写了一个xml的SQL映射文件(EmployeeMapperXml.xml),现在既然不用xml了,就需要另一种你方式来映射SQL吧,mybatis提供面向接口编程的方式。官方文档中是这样说的:

它们的映射的语句可以不需要用 XML 来做,取而代之的是可以使用 Java 注解。比如:
package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}

我这里写一接口:

EmployeeMapper.java:

package yyc.mybatis.mapper;
import org.apache.ibatis.annotations.Select;
import yyc.mybatis.bean.Employee;
public interface EmployeeMapper {

    @Select("SELECT id,last_name lastName,gender,email FROM tb1_employee WHERE id= #{id}")
    public Employee selectOne(Integer id);
}

测试方法(不用xml来得到SqlSessionFactory的方式也不一样):

@Test
    public void testJavaConfig(){
        DataSource dataSource = EmployeeDataSourceFactory.getEmployeeDataSorce();
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        Environment environment = new Environment("development", transactionFactory, dataSource);
        Configuration configuration = new Configuration(environment);
        configuration.addMapper(EmployeeMapper.class);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

        //2.获取sqlSession实例,能直接执行已经映射的sql语句
                SqlSession openSession = sqlSessionFactory.openSession();

                try {
                    EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
                    Employee employee = mapper.selectOne(3);
                    System.out.println(employee);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    openSession.close();
                }
    }

输出:

Employee [id=3, lastName=mac, gender=1, [email protected]]

这样就完全脱离了两个xml配置文件实现查询数据库。

时间: 2024-10-13 21:56:36

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

初探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节点

初探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学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(二)--使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMa

mybatis基础(二)

上接mybatis基础(二) 开发规范: 1.在mapper.xml中namespace等于mapper接口地址 2.mapper.java接口中的方法名和mapper.xml中statement的id一致 3.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致. 4.mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致. 9.properties

Mybatis入门(二)——CRUD

Mybatis入门(二) 添加数据 1.在studentMapping.xml写入SQL <insert id="studentAdd" parameterType="com.bean.Student"> insert into student values(#{sno},#{sName},#{sSex},#{sAge},#{sDept}); </insert> 2.Main函数调用插入数据 String statement="co

spring boot 1.5.4 整合 mybatis(十二)

上一篇:spring boot 1.5.4 整合log4j2(十一) Spring Boot集成Mybatis 更多更详细的配置参考文件:application.properties和<SpringBoot之application配置详解>(新版本新增属性缺失)  或参考官网http://projects.spring.io/spring-boot/ Spring Boot集成Mybatis有两种方式: 方式一:传统的引入外部资源配置的方式,方便对mybatis的控制: 方式二:mybatis

Mybatis系列(二)配置

Mybatis系列(二)配置 <?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> <!-- 引入外部

MyBatis之HelloWorld

一.简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工

mybatis强化(二)Parameters和Result

本文通过一个简单例子简单记录下参数的映射.转载注明出处:http://www.cnblogs.com/wdfwolf3/p/6804243.html,谢谢.文件目录如下, 1.配置文件mybatisconfig.xml如下,这里简要说明一下environments.MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中,尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一.所以,如果你想连接两个数据库,就需要创建两个 SqlSess