我认为mybatis框架的作用是对jdbc代码进行了封装,让代码更简化,减少代码的冗余度。
一、首先建立数据库表,创建项目引入jar包
数据库表格如下,偷了个懒没有写sql脚本,而是直接用navicat软件建表,id要设置为主键并且设置自动递增
我这里导入了目前最新的mybatis的jar包,mysql的jar包,JUnit4(这个是用来之后测试方法的)
二、创建POJO(普通的、传统的JAVA对象)类
POJO类和JavaBean没有任何区别,也就是属性私有化,无参数构造器,有参数构造器,setter和getter方法。
package cn.lzx.domin; public class User { private Integer id; private String name; private String sex; private Integer age; public User(Integer id, String name, String sex, Integer age) { super(); this.id = id; this.name = name; this.sex = sex; this.age = age; } public User() { super(); } public Integer getId() { return id; } public void setId(Integer 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
三、创建xml配置文件
mybatis是通过xml配置文件来完成持久化类(第二步创建的类)和数据库表之间的映射关系的
首先先创建一个xml文件
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">
<mapper namespace="cn.lzx.mapper.UserMapper">
<!--parameterType表示传入的参数,使用useGeneratedKeys="true"表示使用数据库的自动增长策略,#{name}表示去参数对象User中name的属性值 -->
<insert id="save" parameterType="cn.lzx.domin.User" useGeneratedKeys="true">
insert into user(name,sex,age) values(#{name},#{sex},#{age})
</insert>
</mapper>
四、创建mybatis配置信息
这里是配置数据库连接信息,引入第三步的持久化类的映射文件等等,注意配置信息和第三步映射文件的前两行是不一样的,不要轻易复制粘贴。
<?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">
<configuration>
<!--环境配置,即连接哪种数据库。-->
<environments default="mysql">
<!--用于配置其中的一个环境(原因不太懂,先用着) -->
<environment id="mysql">
<!--设置事务管理类型,使用了JDBC的提交和回滚机制 -->
<transactionManager type="JDBC"/>
<!--dataSource指数据源,POOLED是JDBC连接对象的数据源连接池的实现 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--&符号将转义为& -->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--引入持久化类的映射文件-->
<mappers>
<mapper resource="cn/lzx/mapper/UserMapper.xml"/>
</mappers>
</configuration>
五、加载mybatis配置信息,测试类完成对数据库的操作
创建出sqlSessionFactory,生成session,调用session的增删改查方法
package cn.lzx.test; import java.io.InputStream; 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 org.junit.Test; import cn.lzx.domin.User; public class MybatisTest { @Test public void addUser() throws Exception{ InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); SqlSession session=sqlSessionFactory.openSession(); User user=new User("小明","男",30); session.insert("cn.lzx.mapper.UserMapper.save",user); //提交事务 session.commit(); //关闭session session.close(); } }
最后是项目结构图