首先声明:
mybatis试用”
跟着老师做项目,用了三个多月的mybatis,但直到今天,才自己动手亲自配置了一次mybatis。很丢人的,尝试了几天才解决问题。为了让更多的初学者不用走弯路,就写点经验与大家分享。
废话不多说咱们就开始吧。
首先给大家一张总文档结构的图
在开始之前 首先在数据库中导入数据
四个字段都是string型的
第一步先建立项目
第二步也是所有的基础就是导入jar包(让我肝肠寸断的一步!)一共两个一个mybatis—3.01一个classes12。前面那个是mybatis的基础库。后面那个是oracle的jdbc驱动。
第三步就是建立实体类 User
package cn.dcr.mybatis.entity;
public class User {
private String id;
private String userName;
private String password;
private String age;
//省略get set
}
第四步 建立configuration文件。这是mybatis的一个核心,它指导了系统去找哪个数据库,和去哪生成sql语句。
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:" />
<property name="username" value="" />
<pre name="code" class="html"> <property name="password" value="" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/dcr/mybatis/entity/testmapper.xml"/>
</mappers>
</configuration>
注意 url那一项就是数据库的地址 username和passwor就不用说了吧
后面的那个mapper 就是告诉系统 去哪里构建sql语句。
第五步 就是建立mapper文件 也就是生成sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.dcr.mybatis.entity.testmapper">
<select id="selectOne" parameterType="String" resultType="cn.dcr.mybatis.entity.User">
select * from userr where id = #{id}
</select>
</mapper>
sql语句parametetype就是输入的类型 这个例子很简单 就是string型的 后面的resulttype就不解释了:返回的类型。目前的sql语句就完成了专业一个要求:输入id号,在数据库中查到这个元组 返回成user行的model。 当然要新增一个查询的话 很简单,红字复制,然后修改。
第六步 写初始化sqlsessionfactory
package cn.dcr.mybatis.util;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Util {
private static SqlSessionFactory sqlSessionFactory = null;
static {
String resource = "coNfiguration.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
这里我就曾出现过一个问题, 这一行
String resource = "coNfiguration.xml";
configuration的目录就是顶层,诸位看官,你们试试移动xml文件看有什么反应。
第七步
package cn.dcr.mybatis.dao;
import org.apache.ibatis.session.SqlSession;
import cn.dcr.mybatis.entity.User;
import cn.dcr.mybatis.util.Util;
public class UserDao {
public User query(String id){
SqlSession session = Util.getSqlSessionFactory().openSession();
User user = null;
try{ // cn.dcr.mybatis.entity.testmapper 这是mapper文件的namespace selectOne是 <select id="selectOne" ..>的id
user = (User)session.selectOne("cn.dcr.mybatis.entity.testmapper.selectOne", id);
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
return user;
}
}
第九步 就是测试了 。最后一步了
package cn.dcr.mybatis.test;
import cn.dcr.mybatis.dao.UserDao;
import cn.dcr.mybatis.entity.User;
public class UserTest {
public static void main(String[] args){
UserDao userDao = new UserDao();
User user = userDao.query("2");
System.out.println(user.getId());
System.out.println(user.getUserName());
System.out.println(user.getPassword());
System.out.println(user.getAge());
}
}
然后开始测试,右键 run as --> application
大家可以猜想一下,此时控制台会显示什么?
我电脑上显示的结果