Mybatis第一弹

来源:互联网 发布:linux进入目录的命令 编辑:程序博客网 时间:2024/05/17 20:13

1、加载jar包

   我用的是maven构建的工程所以直接在pom文件中配置依赖。

<!-- mybaits -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>


    <!-- JDBC驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>

2、编写mybatis的配置文件(如果想要配置文件有自动提示建议使用luna这个版本的eclipse)

1)mybatis_config.xml(这个文件主要用来加载数据库的连接信息和mapper文件)


<?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="mybatis.properties"/>
<!--配置开发环境 有开发环境、发布环境 英文就不一一罗列了-->
 <environments default="development">
  <environment id="development">
<!--事物管理的类型这里使用的是jdbc进行事物管理有两种类型 一种是jdbc  一种是manager(什么都不做)-->
  <transactionManager type="JDBC"></transactionManager>
<!--数据源的类型-->
<!--POOLED表示mybatis自己的连接池、jndi是tomcat的数据源、unpooled表示不做数据源的管理-->
  <dataSource type="POOLED">
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
  <property name="driver" value="${driver}"/>
  <property name="url" value="${url}"/>
  </dataSource>
  </environment>
 
 </environments>
 <mappers>
 <!-- 加载mapper文件 -->
  <mapper resource="mybatis_mapper.xml"/>
 </mappers>
</configuration>
2)mybatis_mapper.xml(可以有多个对应一个个的实体的持久化处理)


<?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">
<!--namespace表示命名空间唯一的,值来源于你持久化方法在哪个包下-->
<mapper namespace="cn.com.demo.dao.UserDAO">
<!--id表示你持久化对应的方法 parameterType 表示你传入参数的类型 还有许多其他的字段暂时我只用到了这个字段-->
<insert id="addUser" parameterType="cn.com.demo.entity.User">
<!--value后面跟的字段用#{}包裹意思是用来读取你parameterType类型的属性-->
insert into user(username,password,sex,age) value(#{userName},#{password},#{sex},#{age})
</insert>
</mapper>
a) 如果namespace写错了会包一个错误 如果你的namespace 写成:cn.com.demo.dao
the error msg :Mapped Statements collection does not contain value for cn.com.demo.dao.UserDAO.addUser
b) 如果id写错了会包同样一个错误


3)编写java代码文件

a)获取SqlSession
    1)加载配置文件
/获取文件地址
String filePath = "/mybatis_config.xml";
//加载配置文件获取加载配置文件的文件流
InputStream inStream = Resources.class.getResourceAsStream(filePath);
    2)获取session工厂
                SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inStream);

    3)获取session
                SqlSession session = factory.openSession();


有了session我们就可以对数据进行持久化了


我写了一个dao



package cn.com.demo.dao;


import org.apache.ibatis.session.SqlSession;


import cn.com.demo.entity.User;
import cn.com.demo.utils.DBUtil;


public class UserDAO {

public boolean addUser(User user){
boolean isBool = false;
SqlSession session = null;
try {
//获取session
session = DBUtil.getSession();
//对数据进行操作
//UserDAO.class.getName()+".addUser" 这个表示我们配置的那个方法在哪个地方namespace+id
int result = session.insert(UserDAO.class.getName()+".addUser",user);
if(result > 0){
isBool = true;
}
//进行commit(对数据进行过持久化的都知道)
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.commit();
} finally{
if(null != session){
DBUtil.closeSession(session);
}
}
return isBool;
}
}

完成了第一个mybatis的demo 其中有很多错误产生,不要害怕错误的产生  查看报错信息一步步的调试通过就OK了  然后要理解mybatis为什么这么配置 每个配置项配置的目的是什么
建议大家学习这个东西  一定要理解每一个配置项的目的是什么,先走通整个流程然后再去考虑更深层次的东西。


0 0
原创粉丝点击