【Mybatis】Helloworld

Mybatis和Hibernate一样是一个Nosql工具,什么是Nosql?原本,应该在Java中写sql语句,才能对Mysql等数据库进行增删改查,但是经过Nosql工具之后,在Java你只需要一个类方法就能对数据库进行增删改查,当然原本sql的语句还是要写的,只是像Mybatis和Hibernate这些Nosql工具将sql语句和java代码分离开来。


且不论这种工具到底好不好,甚至个人感觉有点没事找事,然而,现在的企业好,业内的java ee公司好,都喜欢用这种框架,所以,你基本必须要会。

一、Mybatis下载、配置

Mybatis和网页其实并没有任何的关系,它只是处理java和数据库之间交流所使用的。所以,利用一个java工程,而非eclipse里面的Dynamic Web Project,就能说明这个问题。

先贴上最终完成的Mybatis Helloworld的项目结构。


你首先需要两个jar,一个是连接Mysql必须的jar,这里以Mysql做例子,Orcale等数据库则换成相应的jar包即可,可以到Mysql的官网下载:https://dev.mysql.com/downloads/connector/j/,下载之后取走其中的mysql-connector-java-5.1.44-bin.jar到你的工程目录,一般在工程目录新建一个lib,放这些包。


然后下载Mybatis,http://www.softpedia.com/get/Programming/Other-Programming-Files/MyBatis.shtml,同样取走里面的核心jar,放到你的工程目录的lib下。


之后在eclipse中设置你这个java项目加载这些lib,Mybatis的配置就正式完成了。


二、Mybatis的Helloworld

目标是将以下的这张已经被举了无数次个栗子废表User里面的数据:


在Java的控制台打印出来,当然,你都会打印了,将数据组织到spring mvc或者strust2也就是这个意思了。


1、首先,先在src目录下新建3个包test.dao,test.entity,test.mapper,src是源代码的意思。


然后在test.entity下新建如下的User.java:

package test.entity;

public class User {
	
	private Integer id;
	private String username;
	private String password;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
 
}

这堆漫长而无聊的getter和setter完全可以在写完3个变量private Integer id;private String username;private String password;利用alt+shift+s让eclipse自己生成,这里在java三个变量对应数据库mysql里面的三个字段。


2、之后在根目录完成Mybatis配置的configuration.xml,这个文件囊括了整个Mybatis的信息,以后需要Mybatis沟通数据库的其它表和java工程的联系,在这个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>
	<typeAliases>
		<typeAlias type="test.entity.User" alias="User" /><!-- 指明有一个实体User,其配置文件的java文件是test.entity下的User -->
	</typeAliases>
	<!-- 写明关于mysql的连接信息 -->
	<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://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="test/mapper/User.xml" /><!-- 指明在user这个表中所包含常用sql方法,test/mapper/User.xml是一个指明java方法和sql语法联系的xml文件 -->
	</mappers>
</configuration>     

3、之后在test.mapper包下新建一个User.xml,这个文件指明了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">
<!-- 指明select * from user where id=#{id}这条sql对应test.dao下的UserDao.java下的findById方法 -->
<!-- 同时findById的返回是一个User类型的类 -->
<mapper namespace="test.dao.UserDao">
	<select id="findById" parameterType="HashMap" resultType="User">
		select * from user where id=#{id}
	</select>
</mapper> 

4、然后在test.dao下新建一个UserDao.java,这个文件写一个接口就行。

package test.dao;

import test.entity.User;

public interface UserDao {
	public User findById(Integer id);
}

经历了上面四个步骤,Mybatis的配置就完成了,在src根目录下新建一个MybatisHelloworld.java就能看到最终效果了

import java.io.IOException;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import test.dao.UserDao;
import test.entity.User;

public class MybatisHelloworld {

	/* mybatis连接数据库的方法,未来可以靠spring写在xml让工程一上来就走这段代码,直接完成注入 */
	private static SqlSessionFactory getSessionFactory() {
		SqlSessionFactory sessionFactory = null;
		String resource = "configuration.xml";
		try {
			sessionFactory = new SqlSessionFactoryBuilder().build(Resources
					.getResourceAsReader(resource));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return sessionFactory;
	}

	public static void main(String[] args) {
		SqlSession sqlSession = getSessionFactory().openSession();// 连接数据库
		UserDao userDao = sqlSession.getMapper(UserDao.class);// Nosql直接得到一个UserDao
		User user = userDao.findById(1);// 直接可以利用getter setter读写数据库里面的数据
		System.out.println("id为1的username=" + user.getUsername());
		System.out.println("id为1的password=" + user.getPassword());
	}

}


猜你喜欢

转载自blog.csdn.net/yongh701/article/details/78436437