前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis入门

Mybatis入门

作者头像
SuperHeroes
发布2019-03-12 14:51:56
3650
发布2019-03-12 14:51:56
举报
文章被收录于专栏:云霄雨霁云霄雨霁

简介:

定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。

途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。

特性:动态SQL语句。

文件结构:Mybatis主要有两种配置文件:全局配置文件和映射文件。

  • 全局配置文件:配置数据库连接、映射文件等。
  • 映射文件:配置SQL语句等。

使用流程

  1. 创建数据库,组织数据入库
  2. 定义pojo
  3. 定义数据访问接口,声明对应的方法
  4. 创建全局配置文件,配置数据库链接、映射文件等
  5. 创建映射文件,配置具体的SQL语句
  6. 实现业务逻辑

示例:

1、创建数据库,组织数据入库:

代码语言:javascript
复制
CREATE TABLE `client_infor` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cp_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8;

2、定义pojo:

代码语言:javascript
复制
public class Client {
	private int id;  //客户ID
	private String cp_name;  //客户名称
	
	public int getId() {  return id;  }
	public void setId(int id) {  this.id = id;  }
	public String getCp_name() {  return cp_name;  }
	public void setCp_name(String cp_name) {  this.cp_name = cp_name;  }
}

3、定义数据访问接口:

代码语言:javascript
复制
public interface ClientDAO {
    //根据客户名称删除客户信息
	public boolean deleteClient(String name) throws Exception;
}

4、创建全局配置文件:

代码语言:javascript
复制
<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://127.0.0.1:3306/infor_mg" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 映射文件路径 -->
        <mapper resource="com/mapping/Client.xml" />
    </mappers>
</configuration>

5、创建映射文件:

代码语言:javascript
复制
<mapper namespace="ClientDAO的类路径">
    <delete id="deleteClient" parameterType="String">
        DELETE FROM Infor_mg WHERE name = #{name}
    </delete>
</mapper>

6、实现业务逻辑:

代码语言:javascript
复制
public class Main {
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("config/Configure.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        SqlSession session = sqlSessionFactory.openSession();
        IUser iuser = session.getMapper(IUser.class);
        try {
            // 执行删除
            iuser.deleteUser("开源中国");
            // 提交事务
            session.commit();
        } finally {
            session.close();
        }
    }
}

示例2:

代码语言:javascript
复制
/**
 * 1、接口式编程
 * 	原生:		Dao		====>  DaoImpl
 * 	mybatis:	Mapper	====>  xxMapper.xml
 * 
 * 2、SqlSession代表和数据库的一次会话;用完必须关闭;
 * 3、SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。
 * 4、mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。
 * 		(将接口和xml进行绑定)
 * 		EmployeeMapper empMapper =	sqlSession.getMapper(EmployeeMapper.class);
 * 5、两个重要的配置文件:
 * 		mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
 * 		sql映射文件:保存了每一个sql语句的映射信息:
 * 					将sql抽取出来。	
 *
 */
public class MyBatisTest {
	
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}

	/**
	 * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
	 * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 
	 * 3、将sql映射文件注册在全局配置文件中
	 * 4、写代码:
	 * 		1)、根据全局配置文件得到SqlSessionFactory;
	 * 		2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
	 * 			一个sqlSession就是代表和数据库的一次会话,用完关闭
	 * 		3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
	 * 
	 * @throws IOException
	 */
	
	@Test
	public void test01() throws IOException {
		// 1、获取sqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		// 2、获取sqlSession对象
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			// 3、获取接口的实现类对象
			//会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			Employee employee = mapper.getEmpById(1);
			System.out.println(mapper.getClass());
			System.out.println(employee);
		} finally {
			openSession.close();
		}
	}
}

补充:

发现一个非常好的Mybatis详细教程,地址:https://www.w3cschool.cn/mybatis/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/07/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介:
  • 示例:
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档