建立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,如下:
- 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文件如下:
- <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,具体如下:
- 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如下:
- <!-- 命名空间需要和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,
- <pre name="code" class="java">public class Test {
- private static SqlSessionFactory sqlSessionFactory;
-
- static{
- Reader reader;
- try {
-
- reader = Resources.getResourceAsReader("config.xml");
-
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public static void main(String[] args){
- SqlSession sqlSession = sqlSessionFactory.openSession();
-
- IStudent iStudent = sqlSession.getMapper(IStudent.class);
-
- 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());
-
-
- student.setName("关二爷");
- student.setAddress("蜀国");
- iStudent.updateStudent(student);
- sqlSession.commit();
- }
- }
运行结果为:
再次运行结果为:
说明学号为9的学生的信息已经更改。
注意:除了select不需要commit外,其余update、delete、insert都需要commit,否则不起作用。
到此,mybatis环境搭建算是成功了。但是在实际项目中很少有单独使用mybatis,都是好几个框架综合使用,比如现在流行的ssm,不过话又说回来,单独的会使用,综合在一起也不难,需要做的仅仅是框架整合部分的工作而已。我会抽空把整合的也整理出来。人总是会偷懒的,就像这篇总结,其实打草稿好久了,但是一直没有完成,一是怕写的不好表达不出意思,二是想写的时候就拖,人总是会给自己找各种各样的接口,但是生活不会,所以想过好的生活那就从勤奋和好习惯开始。
PS:写的不好或者不清楚的地方欢迎指正。