盛夏的MyBatis(二)
前面我们简单的介绍了一下MyBatis发展,下载以及作用,现在我们来简单的使用MyBatis操作一下数据库吧。
使用MyBatis之前我们先创建一个Java工程文件并且导入MyBatis的架包,只有在确保MyBatis的架包成功导入的情况下才能使用MyBatis做开发。当然,因为MyBatis是对通过封装对数据库做操作,那么肯定需要用到数据库,所以您同时还得导入数据库相关的包。如下图:
这些都ok了,我们就开始把MyBatis使用起来,首先,我们说MyBatis是通过映射的方式取代了传统Java编程中的JDBC,所以我们肯定需要MyBatis做些关于数据库的相关的操作,但是由于MyBatis对于数据库的操作已经封装好了,所以只需要简单的配置一下就可以了。我们首先介绍一下通过配置文件方式实现对数据库操作吧。首先我们新建一个SourceFolder叫做conf(具体名称您随意),然后新建一个xml文件叫做SqlMapConfig.xml。在其中编辑如下代码;
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!-- 配置多个数据库的信息 --> 7 <environments default="development"> 8 <environment id="development"> 9 <!-- 配置事务:jdbc事务 --> 10 <transactionManager type="JDBC"> 11 </transactionManager> 12 <!-- 配置数据源:连接池 --> 13 <dataSource type="POOLED"> 14 <property name="driver" value="com.mysql.jdbc.Driver"/> 15 <!-- url后面加上“?useUnicode=true&characterEncoding=utf-8 “修改解决乱码问题 --> 16 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8"/> 17 <property name="username" value="root"/> 18 <property name="password" value="123456"/> 19 </dataSource> 20 </environment> 21 </environments> 22 </configuration>
上图是MyBatis最基本的配置文件结构,然后我们在Src文件夹下面新建如图所示结构的包
其中mapping是放的映射文件,因为我在前面说过,MyBatis是通过映射的方式取代了传统的JDBC编程的,所以我们专门新建一个包来放置相关的映射文件,entity包下面放的是与数据库表对应的实体类,test包下面顾名思义是测试类,当然在具体开发过程中命名什么的根据您所就职的公司的相关规范来进行。好了,言归正传,我们继续往下写,前面的准备好了之后我们在entity下新建一个Java类,在其中定义相关的属性方法,如下:
1 package entity; 2 /** 3 * 与数据库对应的实体类 4 *@author MoF_Crack 5 * @version 1.0.0 6 **/ 7 public class Blog { 8 private int id; 9 private String title; 10 private int author_id; 11 public int getId() { 12 return id; 13 } 14 public void setId(int id) { 15 this.id = id; 16 } 17 public String getTitle() { 18 return title; 19 } 20 public void setTitle(String title) { 21 this.title = title; 22 } 23 public int getAuthor_id() { 24 return author_id; 25 } 26 public void setAuthor_id(int author_id) { 27 this.author_id = author_id; 28 } 29 public Blog() { 30 super(); 31 // TODO Auto-generated constructor stub 32 } 33 public Blog(int id, String title, int author_id) { 34 super(); 35 this.id = id; 36 this.title = title; 37 this.author_id = author_id; 38 } 39 @Override 40 public String toString() { 41 return "Blog [id=" + id + ", title=" + title + ", author_id=" + author_id + "]"; 42 } 43 }
然后在Mapping目录下新建一个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 <mapper namespace="dao.BlogDao"> 6 <!-- 查询 --> 7 <select id="findById" parameterType="int" resultType="entity.Blog"> 8 select * from blog where id = #{id} 9 </select> 10 <!-- 添加--> 11 <insert id="insert" parameterType="entity.Blog" > 12 insert into blog(id,title,author_id) values (#{id},#{title},#{author_id}) 13 14 </insert> 15 <!-- 删除 --> 16 <delete id="delete" parameterType="int"> 17 delete from blog where id=#{id} 18 </delete> 19 <!-- 修改 --> 20 <update id="update" parameterType="entity.Blog"> 21 update blog set title=#{title},author_id=#{author_id} where id= #{id} 22 </update> 23 </mapper>
这里我们需要定义mapper的命名空间,这样方便MyBatis找到配置文件并且执行相关的配置,然后我们编写我们的数据库相关操作,其中id是为了方便找到该SQL语句并且执行,parameterType是定义的输入的数据类型,resultType是定义的返回值类型,我们编写好映射文件之后还有关键的一步必须要要做,那就是把映射文件添加到配置文件中去,也就是在文质文件的environments后面添加如下代码:
1 <mappers> 2 <mapper resource="mapping/BlogMapper.xml"/> 3 </mappers>
这是为了使得MyBatis能找到您的映射文件,这样你的映射文件才能得到编译执行并且返回您期望的值。
前面的都准备好了,接下来我们开始编写测试类:
package test; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import entity.Blog; public class Test { public static void main(String[] args) { //读取配置文件 String resource = "SqlMapConfig.xml"; InputStream is = Test.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); //得到真正的连接 SqlSession session = factory.openSession(); //执行映射文件中编写的SQL语句 Blog blog2=new Blog(4,"mybatis by MoF_Crack",7);
String statement3 ="blogMapper.update"; session.update(statement3, blog2); //事务提交 session.commit(); session.close(); } }
在测试类中我们首先通过文件流的形式读取配置文件,然后通过SqlSessionFactoryBuilder创建SqlSessionFactory,然后我们创建一个SqlSession类的对象,然后打开会话。
我们需要执行映射文件中编写的sql语句,这里以update语句为例,我们先创建一个实体类的对象并且赋值,这里就要求我们在创建实体类时定义了对应的含参数构造方法。然后调用相关的映射文件,最后我们需要做事务提交,并且关闭会话释放资源。
然后我们运行TEST类,结果如图所示:
图中控制台打印为使用log4j辅助开发时所打印。博主将在后续文中为大家详细介绍MyBatis。文中多有不当之处,欢迎您的指出,谢谢!
博主原创,转载请注明出处,谢谢!18:59:30