maven工程第一个MyBatis程序

Struts2框架接触了,Spring也接触了,剩下一个就是持久层框架了。持久层有Hibernate和mybatis两种。Hibernate简要看了一下,相对来讲复杂一点,程序员用面向对象的方法操纵数据库,不能直接写sql语句是很不爽的地方。而mybatis可以直接在xml中写sql语句,这一点让我觉得mybatis更加好用。

eclipse新建一个maven工程,叫mybatisdemo。
简要说一下maven,这也是我今天接触到的。简单来讲,用maven写项目,我们就不需要在网上四处百度jar包了,直接在pom.xml文件中配置依赖即可,这简直是太方便了!而依赖我们在哪找呢?https://mvnrepository.com/

这个网站应有尽有,把依赖也就是dendencies拷下来,eclipse会自动将相应的包导进来。

项目大概结构:

在这里插入图片描述

首先跟往常一样,建表。我建了一个member表,字段只有id, username, password。
然后写出javabean,Member类。

package com.edu.mybatisdemo.bean;
public class Member{
    private Integer id;
    private String username;
    private String password;
    //getter setter 构造略
}

之后和jdbc一样,我们要处理数据库连接的一些操作。这里用database.properties文件,mybatis-configuration.xml文件。配置基本上是千篇一律的,网上复制一个就可以了,改一改数据库名,用户名密码就行
database.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/acc?useUnicode=true&characterEncoding=utf-8
username=root
password=123456

mybatis-configuration.xml

<?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>
    <!-- 配置数据源信息 -->
    <properties resource="database.properties"/>
    <!-- 
         获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)
     -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <!-- 程序中所用到sql映射文件都在这里列出,这些映射sql都被Mybatis管理 -->
    <mappers>
        <mapper resource="com/edu/mybatisdemo/mapper/MemberMapper.xml" />
    </mappers>
</configuration>

这几步做完,可以说我们的数据库已经可以顺利连接了。接下来,我们就来设计增删改查方法就可以了。
这里我们采用面向接口编程的思想,用一个接口设计相应的方法:
MemberMapper接口:

package com.edu.mybatisdemo.mapper;
import com.edu.mybatisdemo.bean.Member;

public interface MemberMapper {
	//插入一个成员
	public void addMember(Member member);
	//根据id,得到一个Member
	public Member getMember(int id);
}

设计好了之后要实现呀。那么我们这里不用类去实现,我们用xml配置来实现。
MemberMapper.xml:

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

<!-- 还得写一个MemberMapper -->
<!-- namespace指定对应的接口 -->
<mapper namespace="com.edu.mybatisdemo.mapper.MemberMapper">
	<!-- 
		id表示实现的方法名,必须要与接口中定义的方法一一对应
		keyProperty表示插入语句的主键是id属性
		useGeneratedKeys=true表示自动生成主键的值,跟我们以前jdbc写sql是一样的
	 -->
     <insert id="addMember" keyProperty="id" useGeneratedKeys="true">
     <!-- 
		insert标签没有参数类型,所以默认是传入一个bean参数,
		#{username} 表示取参数bean的username属性
		#{password}	表示取bean的password属性
	-->
     	insert into member (username, password) values(#{username}, #{password})
     </insert>
     
     <!-- getMember的映射 -->
     <!-- 
		parameterType指定参数类型,这里是int,
		resultType指定返回值类型,这里是Member类型的。
		说明该方法是根据id来返回一个Member对象
		sql语句和我们jdbc的sql语句几乎没什么区别
	 -->
     <select id="getMember" parameterType="int" resultType="com.edu.mybatisdemo.bean.Member">
     	select * from member where id = #{id}
     </select>
</mapper>

万事具备,只欠测试,我们在test中进行测试:
我这里直接用一个main方法测试了:

public static void main(String [] args) {
		//加载我们的mybatis配置文件
		String resource = "mybatis-configuration.xml";
        try {
        	//主要目的:得到session对象
			InputStream ins = Resources.getResourceAsStream(resource);
			 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(ins);
	         SqlSession session = sessionFactory.openSession();
	         Member member = session.selectOne("com.edu.mybatisdemo.mapper.MemberMapper.getMember",1);
	         System.out.println("用户id:"+member.getId()+"\t用户名称:"+member.getUsername());
		} catch (IOException e) {
			System.out.println("testMember方法中");
			e.printStackTrace();
		}	
	}

测试代码看起来很多,其实前面很多操作就只有一个目的,得到session对象,然后利用session对象来处理我们的MemberMapper.xml中的配置。这里跟Hibernate有点像,都是要获得session对象。
真正做项目的时候,可以把这一块获取session的代码封装起来。

我们最终会获取id = 1的那个member对象,并将它的详细信息输出:
在这里插入图片描述
至此,我们就成功完成了一个mybatis程序了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值