第一次写博客,嗯,不求全解,只求能给自己将来的小白逆袭之路减小点阻碍。
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