MybatisStudy01-第一个mybatis
一:为什么要学习Mybatis?
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
第一:配置maven,mybatis必须配置相关jar包,最好在build中配置resources,来防止我们资源导出失败的问题
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
第二:从XML文件中构建SqlSessionFactory
1.每一个Mybatis都是以SqlSessionFactory实例为核心的,SqlSessionFactory可以通过SqlSessionFactoryBuilder获得。而SqlSessionFactoryBuilder则
可以则可以从 XML 配置文件构建出 SqlSessionFactory 实例。
2.MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
具体实现如下:
//引入mybatis的配置文件 String resource = "org/mybatis/example/mybatis-config.xml"; //使用Mybatis的工具类获得配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); //使用SqlSessionFactoryBuilder建立配置 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
第三:关于mybatis-config.xml文件的基础配置(推荐使用mybatis-config这个名字 )
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <!--配置--> 5 <configuration> 6 <!--环境配置,连接的数据库,这里使用的是MySQL--> 7 <environments default="mysql"> 8 <!--环境变量--> 9 <environment id="mysql"> 10 <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置--> 11 <transactionManager type="JDBC"></transactionManager> 12 <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现--> 13 <dataSource type="POOLED"> 14 <property name="driver" value="${dirver}"></property> 15 <property name="url" value="${url}"></property> 16 <property name="username" value="${username}"></property> 17 <property name="password" value="${password}"></property> 18 </dataSource> 19 </environment> 20 </environments> 21 22 <!--每一个Mapper(映射器),XML都需要在Mabatish核心配置文件中注册--> 23 <mappers> 24 <mapper resource="com/he/dao/UserMapper.xml"/> 25 </mappers> 26 27 </configuration>
第四:mybatis映射语句:UserMapper.XML
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6 <!--namespace=绑定一个对应的Dao/Mapper接口--> 7 <mapper namespace="com.he.dao.UserMapper"> 8 9 <!--调用接口中获取查询结果得方法。返回结果集,相当于JDBC里的resultSet--> 10 <select id="getUserList" resultType="com.he.pojo.User"> 11 <!--select查询语句--> 12 select * from mybatis.user 13 </select> 14 15 <!--id对应namespace中的方法名,resultType对应返回值类型,parameterType对应参数类名--> 16 <select id="getUserById" resultType="com.he.pojo.User" parameterType="int"> 17 select * from mybatis.user where id= #{id}; 18 </select> 19 20 <insert id="addUser" parameterType="com.he.pojo.User"> 21 insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd}); 22 </insert> 23 24 <update id="updateUser" parameterType="com.he.pojo.User"> 25 update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id} ; 26 </update> 27 28 <delete id="deleteUser" parameterType="int"> 29 delete from mybatis.user where id=#{id}; 30 </delete> 31 </mapper>
第五:编写接口和实体类
UserMapper接口
package com.he.dao;
import com.he.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//模糊查询
User getUserLike(String name);
//查询全部用户
List<User> getUserList();
//根据ID查询用户
User getUserById(int id);
//野路子之万能map查询
User getUserById2(Map<String,Object> map);
//添加用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除用户
int deleteUser(int id);
}
User实体类:
package com.he.pojo;
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = 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{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
第六:从 SqlSessionFactory 中获取 SqlSession
sqlSession中提供了数据库执行SQL的所有方法,可以通过SqlSession实例来执行映射的语句。
SqlSession session = sqlSessionFactory.openSession() //sqlSession获取映射 UserMapper mapper = session.getMapper(UserMapper.class); //执行一个通过id获取用户的方法 User user = mapper.getUserById(1)
第七:编写 mybatis工具类,首先要知道以下几点
1.SqlSessionFactoryBuilder这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。
2.SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。
3.每个线程都应该有它自己的 SqlSession 实例。
工具类如下:MybatisUtils
package com.he.utils;
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 java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用mybatis第一步:获取sqlSession对象
String resource="mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}catch (Exception e){
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。
//SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
}
第八:测试
@Test
public void getUserById(){
//使用工具类调用SqlSession
SqlSession sqlSession = MybatisUtils.getSqlSession();
//获取映射,传入接口的.class文件,通过反射获取内容
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用,接口中通过id查询用户的方法
User userById = mapper.getUserById(1);
//输出
System.out.println(userById);
//每次执行完需要关闭SqlSession
sqlSession.close();
}
总结:1.配置maven环境,导入工具类
2.配置mybatis-config.xml
3.创建接口,实体类
4.编写mapper.xml文件
5.测试

浙公网安备 33010602011771号