Mybatis基础配置及使用
2017-05-25 19:13
477 查看
Mybatis是一个基于Java的持久层框架,主要用来做数据库的访问操作,与JDBC的作用基本相同。
Mybatis与JDBC的不同之处在于:
1.JDBC代码冗余大,开发效率低。
2.JDBC中sql命令写在Java程序中,如果sql发生改变会导致代码的重新编译。
3.JDBC中所有的O-R mapping的动作都要手动完成。
而Mybatis框架对现有代码进行了合理的封装(便于后续的重复调用,可以提高开发效率)。
Mybatis体系结构
提供了一个映射文件–mapper文件(向Mybatis提出功能的要求)
Mybatis根据定义的mapper文件,自动生成相应的Java实现类。
搭建Mybatis开发环境
引入Mybatis需要的jar包,以及数据库的jar。
为Mybatis设置运行环境(通过配置文件设置)。将Mybatis-config.xml放置在src目录下。
Mybatis的核心类:
1)SqlSessionFactoryBuilder:负责加载mybatis-config.xml文件内容。
2)SqlSessionFactory:负责构建SqlSession 。
3)SqlSession:一次数据库会话,包含多次数据库访问操作,相当于JDBC里的Connection。
以实例简单介绍具体使用过程:
1.新建表和实体类。
2.定义dao接口。
3.通过映射文件实现dao接口。
4将映射文件配置到mybatis-config.xml文件中(通知mybatis有一个映射文件)
5.编写测试类,测试dao的功能。
图文详解:
在项目下新建lib文件夹,导入mybatis的jar和数据库的jar文件,以mysql为例,并将其加入到build path中(Add to build path)。
在src(或者某个指定的包下)新建jdbc.properties文件,在其中写连接数据库所需要的信息,就是加载数据库驱动,url,username,password等信息:
新建一个名为test的数据库以及一个名为mytest的表,表中有name,id两个字段;没有设置主键;
根据表中信息建立的实体类;
实体类的DAO接口
编写实现实体类DAO接口的mapper类型的xml文件
将上述mapper类型的xml文件配置到mybatis-config.xml中
编写测试类,测试DAO中的方法:
运行测试类之后查看数据表中是否成功插入数据:
数据成功插入。。
还可以导入log4j的jar查看后台的具体过程。
Mybatis与JDBC的不同之处在于:
1.JDBC代码冗余大,开发效率低。
2.JDBC中sql命令写在Java程序中,如果sql发生改变会导致代码的重新编译。
3.JDBC中所有的O-R mapping的动作都要手动完成。
而Mybatis框架对现有代码进行了合理的封装(便于后续的重复调用,可以提高开发效率)。
Mybatis体系结构
提供了一个映射文件–mapper文件(向Mybatis提出功能的要求)
Mybatis根据定义的mapper文件,自动生成相应的Java实现类。
搭建Mybatis开发环境
引入Mybatis需要的jar包,以及数据库的jar。
为Mybatis设置运行环境(通过配置文件设置)。将Mybatis-config.xml放置在src目录下。
Mybatis的核心类:
1)SqlSessionFactoryBuilder:负责加载mybatis-config.xml文件内容。
2)SqlSessionFactory:负责构建SqlSession 。
3)SqlSession:一次数据库会话,包含多次数据库访问操作,相当于JDBC里的Connection。
以实例简单介绍具体使用过程:
1.新建表和实体类。
2.定义dao接口。
3.通过映射文件实现dao接口。
4将映射文件配置到mybatis-config.xml文件中(通知mybatis有一个映射文件)
5.编写测试类,测试dao的功能。
图文详解:
在项目下新建lib文件夹,导入mybatis的jar和数据库的jar文件,以mysql为例,并将其加入到build path中(Add to build path)。
在src(或者某个指定的包下)新建jdbc.properties文件,在其中写连接数据库所需要的信息,就是加载数据库驱动,url,username,password等信息:
新建一个名为test的数据库以及一个名为mytest的表,表中有name,id两个字段;没有设置主键;
根据表中信息建立的实体类;
import java.util.Date; /** *@author xpengfei *@creat 4:22:24 PM May 25, 2017 */ public class userData { private String name; private int id; public userData(String name, int id) { this.name = name; this.id = id; } public userData() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
实体类的DAO接口
/** *@author xpengfei *@creat 4:27:28 PM May 25, 2017 */ public interface userDataDao { //暂写一个insert方法,用作测试 public void insert_userData(userData userdata); }
编写实现实体类DAO接口的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"> <!--等价于dao接口的实现 namespace必须和接口类的类路径一样 (也就是全类名即是包含包名在内),parameterType指的是参数的类型,这里传进的是userData对象,所以要写userData类的全类名,这个项目中我没有新建包,所以可以直接写类名,如果有包的话,要写类所在的包的包名.类名(eg:如果userData在day包下,则写day.userData)--> <mapper namespace="userDataDao"> <insert id="insert_userData" parameterType="userData"> <!--这里通过#{属性名}的方式可以获取传入的userData对象中对应的参数数据--> insert into mytest(name,id) values(#{name},#{id}) </insert> <!--在这可以继续添加其他的方法,例如select等,方法同insert--> </mapper>
将上述mapper类型的xml文件配置到mybatis-config.xml中
<?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"> <!-- configration是根标签,mybatis的所有配置文件必须定义在configration标签里 --> <configuration> <!-- 属性文件,导入jdbc.properties便于引入连接数据库所需要的信息,后期更改的话会更加方便,直接在jdbc.properties中修改即可 --> <properties resource="jdbc.properties"></properties> <!-- environments配置mybatis的运行环境,id是它的唯一标识,default是它的属性() 也就是mybatis连接数据库采取的是哪种,在这里可以配置多个enviroment,更具需要做出选择即可--> <environments default="development"> <environment id="development"> <!-- 指明操作过程中采用什么事务管理策略 --> <transactionManager type="jdbc" /> <!-- 数据源,POOLED是指mybatis内置的连接池 --> <dataSource type="POOLED"> <!--上边以及引入了jdbc.properties文件,在这可以直接以${要用的参数名}来到获取相应的数据--> <property name="driver" value="${jdbc.driverClass}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 列出映射文件 --> <mappers> <!--这里要写映射文件的路径,从src下开始写--> <mapper resource="userDataDaoImp.xml" /> </mappers> </configuration>
编写测试类,测试DAO中的方法:
import java.io.Reader; import java.util.Date; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /** *@author xpengfei *@creat 4:42:30 PM May 25, 2017 */ public class test_userDataDao { public static void main(String[] args) throws Exception{ //得到SQLSession //创建SqlSessionFactoryBuilder对象,负责加载mybatis的配置文件 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); //读取mybatis的配置文件 Reader reader=Resources.getResourceAsReader("mybatis-config.xml"); //用builder的build方法加载配置文件,同时将读到的内容保存到SqlSessionFactory对象中 SqlSessionFactory factory=builder.build(reader); //获取SqlSession对象,相当于JDBC中的Connection,一次数据库会话,包含多次数据库访问操作 SqlSession session=factory.openSession(); //调用session的getMapper()方法可以得到mybatis生成的DAO接口的实现类 userDataDao dao=session.getMapper(userDataDao.class); //调用insert方法完成插入操作 userData user_data=new userData("xpengfei",1); dao.insert_userData(user_data); session.commit(); session.close(); } }
运行测试类之后查看数据表中是否成功插入数据:
数据成功插入。。
还可以导入log4j的jar查看后台的具体过程。
相关文章推荐
- 使用generator生成mybatis基础配置代码和目录结构
- mybatis学习笔记(六)使用generator生成mybatis基础配置代码和目录结构
- mybatis学习笔记(六)使用generator生成mybatis基础配置代码和目录结构
- 使用maevn项目的mybatis基础配置及使用
- 学习笔记-----------------Hibernian基础配置(注解的使用和主键生成策略)
- Windows+OpenLDAP+MySQL配置及使用详解(一)——基础配置
- JSP基础01[tomcat服务器的配置及使用]
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- 基础Java类使用类装载器实现装载配置文件
- 天书夜读:WinDbg配置和使用基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础(转)
- WinDbg配置和使用基础
- WinDbg配置和使用基础