创建流程1.mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
2.mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。
3.采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
先创建个maven的project(File-New-Project)不需要任何骨架
随便取一下GroupID之类的。。。next,ok即可,完成后再enable auto-import一下maven工程,并添加以下的依赖:
org.mybatis mybatis 3.4.5 mysql mysql-connector-java 5.1.6 junit junit 4.11 test
项目结构也会自动生成,然后我们采用如下的结构来测试
对应的代码如下
Userdao接口
package com.study.dao;
import com.study.user.User;
import java.util.List;
public interface Userdao {
List findAll();
}
User
package com.study.user;
public class User {
private String name;
private double score;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", score=" + score + ", age="
+ age + "]";
}
}
mybatis-config.xml
UserDao.xml
select * from user
使用Mybatis步骤:
1.读取配置文件 2.创建SqlSessionFactory工厂 3.创建SqlSession 4.创建Dao接口的代理对象 5.执行dao中的方法 6.释放资源
test
package com.study;
import com.study.dao.Userdao;
import com.study.user.User;
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 java.io.InputStream;
import java.util.List;
public class test {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
Userdao userDao = session.getMapper(Userdao.class);
//5.使用代理对象执行方法
List users = userDao.findAll();
for(User user : users){
System.out.println(user.toString());
}
//6.释放资源
session.close();
in.close();
}
}
最后效果
注意事项- mybatis-config.xml:是主配置文件,有一些连接数据库参数的配置,其中mybatis持久层的操作接口名称和映射文件叫做Mapper,所以我们还创建了UserDao.xml映射配置文件,并在主配置文件中指定位置。映射配置文件的mapper标签namespace属性的取值是dao接口的全限定类名映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
这样我们就不需要再创建dao的实现类来完成jdbc的操作
增删改修改映射文件即可
insert into user (name,age,score) values (#{name},#{age},#{score}) update user set score = #{score},age = #{age} where name=#{name} delete from user where name = #{name}
测试文件修改如下:(顺便熟悉一下Junit的使用)
package com.study;
import com.study.dao.Userdao;
import com.study.user.User;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class test {
private InputStream in;
private SqlSessionFactoryBuilder builder;
private Userdao userDao;
private SqlSession session;
private SqlSessionFactory factory;
private User user = new User();
@Before //被注解后在测试方法执行前会执行
public void init() throws IOException {
in = Resources.getResourceAsStream("mybatis-config.xml");
builder = new SqlSessionFactoryBuilder();
factory = builder.build(in);
session = factory.openSession();
session.commit();//提交事务
userDao = session.getMapper(Userdao.class);
}
@Test
public void selecttest()throws Exception{
List users = userDao.findAll();
for(User user : users){
System.out.println(user.toString());
}
}
@Test
public void Savetest() throws IOException {
user.setName("苏浙");
user.setAge(20);
user.setScore(72.9);
userDao.save(user);
}
@Test
public void Update(){
user.setName("张三");
user.setAge(18);
user.setScore(100.0);
userDao.UpdateUser(user);
}
@Test
public void delete() {
userDao.deleteUser("test");
}
@Test
public void findlike(){
List users = userDao.findlike("%张%");
for (User user : users) {
System.out.println(user);
}
}
@After //测试方法执行后执行,释放资源
public void destroy() throws IOException {
session.close();
in.close();
}
}
参考
Java学习之Mybatis框架入门篇
推荐阅读MyBatis 和 SQL 注入的恩恩怨怨



