Mybatis 的配置
1.创建项目(当然,这是废话)
2.导包
下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis/
下载commson-dbcp :http://maven.aliyun.com/nexus/#nexus-search;quick~dbcp
下载ojdbc :http://maven.aliyun.com/nexus/#nexus-search;quick~ojdbc6
3.配置 主配置文件(xml 文件),用来指定数据库的连接参数(该文件通常放在src/main/resources 文件下)
<?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="environment"> <!-- 连接参数配置 一个environment对应一个数据源--> <environment id="environment"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <!--value 值根据项目连接的数据库参数填写--> <property name="driver" value="oracle.jdbc.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@192.168.30.58:1521:orcl"></property> <property name="username" value="system"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--mappers 是配置 指向映射文件所在的位置 resource 指向文件所在地址,如果该地址不存在该文件就会报错--> <mappers> <mapper resource="UserMapper.xml"></mapper> </mappers> </configuration>
4.配置映射 文件
<?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 映射DAO接口 所在的文件目录 --> <mapper namespace="chinaedu.mapper.UserMapper"> <!-- 根据sql 语句选择不同的标签 id映射 接口 下的方法名 resultType 填返回的参数类型 parameterType填传入的参数类型--> <select id="findById" resultType="chinaedu.beans.User" parameterType="Integer"> <!-- #{} 花括号里面填 传入的参数 ,改参数名应映射 bean类 里的属性名 --> select * from user_zhang where id= #{id} </select> <select id="findMapOne" resultType="Map" > select * from user_zhang where id=#{id} </select> <insert id="save" parameterType="chinaedu.beans.User"> insert into user_zhang values (#{id},#{userName},#{password}) </insert> </mapper>
5. 获取Sqlsession 对象,该对象包含了所有执行Sql操作的方法,用于执行已映射的SQL 语句
获取SqlSession对象方法 :通过 SqlSessionFactoryBuilder 对象根据mybatis的主配置文件创建SqlSessionFactory对象,
每一个Mybatis的应用程序都以一个SqlSessionFactory 对象为核心,负责创建SqlSession 对象。封装获取SqlSession的代码如下:
package chinaedu.util;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static { // 静态区,加载速度快
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
try {
sqlSessionFactory=builder.build(Resources.getResourceAsReader("sqlMapConfig.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
6.创建 bean 类,该类的 成员变量 对应数据库的字段名(用于映射)
7.创建 Mapper接口,该接口的目录地址应对应 映射配置文件的 namespace 属性值
8.创建Dao 类 继承Mapper 接口,实现对数据库的增删改查操作,简单代码参考如下
package chinaedu.mapper; import java.util.Map; import org.apache.ibatis.session.SqlSession; import chinaedu.beans.User; import chinaedu.util.MybatisUtil; public class UserDao implements UserMapper { SqlSession session=MybatisUtil.getSqlSession(); public static void main(String[] args) { UserMapper dao =new UserDao(); User user=dao.findById(1); System.out.println(user); user.setId(4); dao.save(user); Map<String,String> map=dao.findMapOne(1); System.out.println(map); } public User findById(int id) { User user=session.selectOne("chinaedu.mapper.UserMapper.findById",id); //session.close(); return user; } public Map<String, String> findMapOne(int id) { UserMapper um=session.getMapper(UserMapper.class); Map<String,String> map=um.findMapOne(id); //System.out.println(um); //session.close(); return map; } public void save(User user) { try { session.insert("chinaedu.mapper.UserMapper.save",user); session.commit(); } catch (Exception e) { session.rollback(); e.printStackTrace(); } //session.close(); } }
end