建立mybatis环境大概需要五个步骤:
1、建立项目,引入jar包
2、建立数据库,将表和类一一映射
3、配置配置文件,连接数据库
4、写接口,并实现
5、测试是否搭建成功
1、建立项目,引入jar包
建立Java项目或maven项目均可,我建的是maven项目,然后导入jar包:mybatis和MySQL的jar包,我导入的版本分别是:mybatis-3.4.2.jar和mysql-connector-Java-5.1.42-bin.jar,大家可以上网下载下。导入后右键点击然后选择build path,把他们加入到路径下。
2、建立数据库,将表和类一一映射在数据库中建立学生信息表student(id, name, sex, age, address)对应的实体类是Student,如下:
[java] view plain copy public class Student { private long id; private String name; private String sex; private int age; private String address; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", address=" + address + "]"; } } 3、配置配置文件,连接数据库 既然需要操作数据库,那么肯定需要先连接数据库了。 如何连接:
在mybatis的配置文件中:configuration.xml进行数据库连接配置。
configuration.xml文件如下:
[java] view plain copy <configuration> <!-- 为用到的实体类取别名 --> <typeAliases> <!-- <typeAlias alias="别名" type="实体类路径全名:包名+类名"/> --> <typeAlias alias="Student" type="com.mybatis.model.student.Student"/> </typeAliases> <environments default="development"> <environment id="development"> <!-- 默认的事务管理 --> <transactionManager type="JDBC"/> <!-- 默认的数据库连接 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/school" /> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <!-- 映射文件 --> <span style="white-space:pre"> </span><!-- 如果映射文件和接口文件在同一包下面那么可以不用此配置,因为它会默认去接口的同一包下面找 --> <mapper resource="com/mybatis/model/student/StudentMapper.xml"/> </mappers> </configuration> 其中,别名的作用是可以在用到这个类时直接使用别名,而不用再写全路径名了
4、写接口,并实现
接口也就是所谓的dao层,主要在这层进行增删改查,在src/main/java目录先建立com.mybatis.dao.student包,然后定义学生接口IStudent,具体如下:
[java] view plain copy public interface IStudent { public Student findStudentById(long id); public void addStudent(Student student); public void updateStudent(Student student); public void deleteStudent(long id); } 我们都知道接口需要实现的,在这里怎么实现呢?上文提到过映射文件,是的,通过映射文件来实现接口,这也就是mybatis的好处体现的地方之一,灵活、消除繁琐的jdbc代码,如果我们需要改动可以直接在映射文件中进行更改。IStudent接口映射文件StudentMapper.xml如下: [java] view plain copy <!-- 命名空间需要和IStudent的路径对应,IStudent中的方法名跟下边的操作中的id属性对应,否则会出错 --> <mapper namespace="com.mybatis.dao.student.IStudent"> <!-- parameterType是需要穿进去的参数的类型,resultType是返回的参数类型,此处Student即是上午学生类的别名,如果没有别名的话就需要写全限定类名 --> <select id="findStudentById" parameterType="long" resultType="Student"> select * from student where id = #{id} </select> <insert id="addStudent" parameterType="Student" useGeneratedKeys="true" keyProperty="id"> insert into student(name, sex, age, address) values(#{name}, #{sex}, #{age}, #{address}) </insert> <update id="updateStudent" parameterType="Student"> update student set name = #{name},age = #{age}, sex = #{sex}, address = #{address} where id = #{id} </update> <delete id="deleteStudent" parameterType="long"> delete from student where id = #{id} </delete> </mapper> StudentMapper.xml文件在src/main/java/com/mybatis/dao/student包下。另外#{}相当于占位符,传递的参数通过名字进行对应的赋值。
注意:mybatis中有配置文件和映射文件两种xml文件,有些初接触的小伙伴可能会觉得有点懵。
5、测试是否搭建成功
在src/main/java下新建包test,test包下新建测试类Test,
[java] view plain copy <pre name="code" class="java">public class Test { private static SqlSessionFactory sqlSessionFactory; static{ Reader reader; try { //读取配置文件 reader = Resources.getResourceAsReader("config.xml"); //建立sqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args){ SqlSession sqlSession = sqlSessionFactory.openSession(); //getMapper中的参数为对应的接口类 IStudent iStudent = sqlSession.getMapper(IStudent.class); //查找学号为9的学生,并打印 Student student = iStudent.findStudentById(9L); System.out.println("id:" + student.getId()); System.out.println("name:" + student.getName()); System.out.println("age:" + student.getAge()); System.out.println("sex:" + student.getSex()); System.out.println("address:" + student.getAddress()); //更新刚刚查出的学号为9的学生的姓名和地址 student.setName("关二爷"); student.setAddress("蜀国"); iStudent.updateStudent(student); sqlSession.commit(); } }
运行结果为:
再次运行结果为:
说明学号为9的学生的信息已经更改。
注意:除了select不需要commit外,其余update、delete、insert都需要commit,否则不起作用。 到此,mybatis环境搭建算是成功了。但是在实际项目中很少有单独使用mybatis,都是好几个框架综合使用,比如现在流行的ssm,不过话又说回来,单独的会使用,综合在一起也不难,需要做的仅仅是框架整合部分的工作而已。我会抽空把整合的也整理出来。人总是会偷懒的,就像这篇总结,其实打草稿好久了,但是一直没有完成,一是怕写的不好表达不出意思,二是想写的时候就拖,人总是会给自己找各种各样的接口,但是生活不会,所以想过好的生活那就从勤奋和好习惯开始。
PS:写的不好或者不清楚的地方欢迎指正。