简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis官网:https://github.com/mybatis/mybatis-3
MyBatis开发流程
1.添加jar包
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
2. 编写核心配置文件
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.dirver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments>
3. 新建实体类
public class Dept { private Integer id; private String dname; private String loc;
4. 新建mapper接口及映射文件
public interface DeptMapper { public List<Dept> getDept(); public int saveDept(Dept dept); public int updDept(@Param("n") String n , @Param("o") String o); }
<?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="com.**.mapper.DeptMapper"> <select id="getDept" resultType="dept"> select * from dept </select> <insert id="saveDept" > insert into dept(dname,loc) VALUES (#{dname},#{loc}) </insert> <update id="updDept"> update dept set dname = #{n} where dname = #{o} </update> </mapper>
5. 测试
private SqlSession session; @Before public void start(){ try { //读取文件流 mybatis 核心配置 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); session = factory.openSession(); } catch (IOException e) { e.printStackTrace(); } } @Test public void getDept(){ DeptMapper mapper = session.getMapper(DeptMapper.class); List<Dept> list = mapper.getDept(); System.out.println(list); } @Test public void saveDept(){ try { DeptMapper mapper = session.getMapper(DeptMapper.class); Dept dept = new Dept(); dept.setDname("市场部"); dept.setLoc("济南"); int num = mapper.saveDept(dept); session.commit(); System.out.println("济南"); }catch (Exception e){ e.printStackTrace(); } } @Test public void updDept(){ DeptMapper dept = session.getMapper(DeptMapper.class); int num = dept.updDept("销售部","市场部"); System.out.println(num); } @After public void colse(){ if(session != null){ session.close(); } }