mybatis环境配置及简陋测试

第一次写博客,嗯,不求全解,只求能给自己将来的小白逆袭之路减小点阻碍。

mybatis是用来简化数据库操作的数据库框架,它能半自动地处理数据库操作。对于其他的,本菜鸟也只能简单描述描述如何配置,至于原理之类的说实话我也不知道。So,正式开怼!

1.mybatis的主要配置文件和jar包

mybatis配置的文件主要包括 mybatis-config.xml(数据库连接配置文件),log4j.properties(这个是mybatis默认的日志文件信息处理文件),和 CusetomerMapper.xml(这个是用来写数据库查询语句的文件)以及一个写调用的数据库配置的java文件,名称随意。

贴一个我自己的小案例。

2.mybatis的包

最上面的三个log4j 的jar包是用来支持log4j.properties文件的,这个我反正是没涉及过,只能略过。下面的mybatis 的jar包mybatis的核心jar包,而mysql-connector的jar包是支持数据库查询的包,如果是用SQLserver的数据库,要把这个文件换成SqlServer的核心包。而其他的都是依赖包,这些都可以在网上搜mybatis关键字进行下载。

3.配置mybatis-config.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>
    <!-- 设置环境为mysql -->
	<environments default="mysql">
	    <!-- 设置id为mysql的环境 -->
		<environment id="mysql">
		    <!-- 使用jdbc的事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据连接池 -->
			<dataSource type="POOLED">
			    <!-- mysql数据库的专用驱动 -->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- phone是数据库名 -->
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/phone" />
				<!-- 数据库的名称和密码 -->
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 配置Mapper的位置 -->
	<mappers>
	    <!-- 指向写数据库操作语句的配置文件 -->
		<mapper resource="com/java32/Mapper/CusetomerMapper.xml" />
	</mappers>
</configuration>

这个个人没啥好说的,直接怼就对了,但是得注意那个指向数据库操作文件的地址,虽然这个文件的名称可以随意,但是得与配置文件的名称一致,不然,,,嘿嘿,你惨了。

4.配置log4j.properties

# Global logging configuration
 log4j.rootLogger=ERROR, stdout 
 # MyBatis logging configuration... 
 log4j.logger.org.mybatis.example.BlogMapper=DEBUG
 # Console output... 
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
  log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

这个配置不用手敲,在mybatis下载的jar包文件会有一个PDF手册,在那里面会找到这些代码,但是要注意第四行,如果你是在mybatis 的PDF文件中粘贴的,那么它会长这样

你得把它改成DEBUG(但是似乎不改也没什么大问题),这个是用于管理日志输出级别的,大概的日志级别情况分为:trace<debug<info<warn<error<fatal

所以它会输出一大堆日志出来,会让你眼花缭乱的,而debug级别差不多就是适合项目调试的,日志条目不会那么繁杂,比较实用。(其他的请垂询度娘)

4.配置CusetomerMapper.xml

这个文件名要与mybatis-config.xml文件中<mapper resource="com/java32/Mapper/CusetomerMapper.xml" />一致。

2.
<?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">
  <!--命名空间 值通常会设为 这个xml文件的位置 -->
<mapper namespace="com.java32.Mapper.CusetomerMapper">
    <!-- 根据客户信息获得客户信息 id唯一标志这个sql,parameterType 指定传入参数的类型 ,resultType表示返回结果的类型,这个通常指向自己创建的demo类-->
	<select id="login" parameterType="String" resultType="com.java32.Molde.User_Damo"> 
	    select * from t_user where name=#{u_name} </select>
	    
	  <insert id="add" parameterType="com.java32.Molde.User_Damo" >
	      insert into t_user(name,pwd) values(#{name},#{pwd});
	  </insert>
	   <update id="updatea" parameterType="com.java32.Molde.User_Damo">
	      update t_user set name=#{name},pwd=#{pwd} where id=#{id}
	  </update> 
</mapper>

insert和update没有 resultType="com.java32.Molde.User_Damo"属性

#{}用于从java端接收demo类传过来的参数,类似于xml中的${}。

而至此呢,mybatis算是搭建完成了,但是要使用就还需要用Java文件去调用和控制。

package com.java32.Test;

import java.io.IOException;
import java.io.InputStream;

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 com.java32.Molde.User_Damo;

public class MybatisTest {
	User_Damo damo=new User_Damo();
	public  SqlSession getsql(){
		String resource="Mybatis-config.xml";
			InputStream input = null;
			try {
				input = Resources.getResourceAsStream(resource);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			SqlSessionFactory sqlsession=new SqlSessionFactoryBuilder().build(input);
			return sqlsession.openSession();
	}
	public void SelectTest(String u_name){
		damo=getsql().selectOne("com.java32.Mapper."+"CusetomerMapper.login",u_name);
		System.out.println(damo);
		getsql().close();
	}
	public void InsertTest(String Name,String pwd){
		
		damo.setName(Name);
		damo.setPwd(pwd);
		SqlSession splsession = getsql();
		int row=splsession.insert("com.java32.Mapper."+"CusetomerMapper.add",damo);
		if(row>0){
			System.out.println("你插入了"+row+"条消息");
		}else{
			System.out.println("插入失败");
		}
		splsession.commit();
		splsession.close();
	}
	/**
	 * 1.com.java32.Mapper."+"CusetomerMapper.add mapper后面记得要打点
	 * 2.在调用方法时必须赋值,否则会因为不是同一个对象而导致错误*/
	
	public void update(){
		SqlSession sqlsession=getsql();
		User_Damo dao=new User_Damo();
		dao.setId(9);
		dao.setName("小明");
		dao.setPwd("1234");
		int row=sqlsession.update("com.java32.Mapper."+"CusetomerMapper.updatea", dao);
		if(row>0){
			System.out.println("你更新了"+row+"条消息");
		}else{
			System.out.println("更新失败");
		}
		sqlsession.commit();
		sqlsession.close();
	}
	
}
	

这个是用来操作mybatis的,getsql()方法是用来连接mybatis的,其他的数据库操作都会调用它返回的进行SqlSession。在操作update、insert、delete的时候要记得提交commit()。

最后要记住,千万千万千万要关闭流!!!

最后贴上所有的代码,至少能运行是吧。

User_Dao类

package com.java32.Molde;

public class User_Damo {
	private int id;
	private String name;
	private String pwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	@Override
	public String toString() {
		return "User_Damo [id=" + id + ", u_name=" + name + ", u_pwd=" + pwd + "]";
	}
	
}

测试类

package com.java32.Test;

import org.junit.Before;

public class Test {

    @Before
    public void setUp() throws Exception {
    }

    @org.junit.Test
    public void test() {
        MybatisTest myb=new MybatisTest();
        myb.SelectTest("张三");
        myb.InsertTest("aaa" ,"aaa");
        myb.update();
    }

}


差不多就这样吧,但愿能有点用。

最后附上我的mybatis的jar包 链接,密码为4pgp




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值