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>
<!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">
<environments default="development">
<environment id="development">
<!--事物管理的类型这里使用的是jdbc进行事物管理有两种类型 一种是jdbc 一种是manager(什么都不做)-->
<transactionManager type="JDBC"></transactionManager>
<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>
<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">
<!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">
<mapper namespace="cn.com.demo.dao.UserDAO">
<!--id表示你持久化对应的方法 parameterType 表示你传入参数的类型 还有许多其他的字段暂时我只用到了这个字段-->
<insert id="addUser" parameterType="cn.com.demo.entity.User">
<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>
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);
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 {
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();
session = DBUtil.getSession();
//对数据进行操作
//UserDAO.class.getName()+".addUser" 这个表示我们配置的那个方法在哪个地方namespace+id
int result = session.insert(UserDAO.class.getName()+".addUser",user);
if(result > 0){
isBool = true;
}
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;
}
}
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.commit();
} finally{
if(null != session){
DBUtil.closeSession(session);
}
}
return isBool;
}
}
完成了第一个mybatis的demo 其中有很多错误产生,不要害怕错误的产生 查看报错信息一步步的调试通过就OK了 然后要理解mybatis为什么这么配置 每个配置项配置的目的是什么
建议大家学习这个东西 一定要理解每一个配置项的目的是什么,先走通整个流程然后再去考虑更深层次的东西。
0 0
- Mybatis第一弹
- Mybatis第一弹
- Mybatis第一个例子
- 第一个mybatis例子
- mybatis第一个helloworld
- 第一讲 MyBatis开端
- 第一个MyBatis程序
- Mybatis 第一个Demo
- Mybatis第一课-牛
- mybatis第一个问题
- 第一个Mybatis
- 学习mybatis 第一课
- Mybatis第一课
- MyBatis实战第一讲
- 第一个mybatis程序(mybatis入门)
- 【MyBatis框架】MyBatis入门程序第一部分
- 【MyBatis框架】MyBatis入门程序第一部分
- 【MyBatis框架】MyBatis入门程序第一部分
- 排序之堆排序
- ulimit命令参数及用法
- Vim 实用技术,第 1 部分: 实用技巧
- 内联
- php中的继承
- Mybatis第一弹
- PHP常用函数
- 第二周项目-4用循环求
- redis集群
- p2169
- 动态规划参考资料
- Vim 实用技术,第 2 部分: 常用插件
- HDU 1250 Hat's Fibonacci
- DEV--gridControl用法(2)