MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀==持久层框架==。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 半自动化框架。必须写sql语句。
Mybatis项目需要修改pom.xml包
添加Mybati和mysql 的 jar 包
可以在这个网站找:https://mvnrepository.com/
1.对数据库表的CRUD:
需要有mybatis的配置文件,里面进行连接数据库
conf.xml
数据库里面的数据:
书写实体类:User
@Data 这些是 lombok插件 lombok怎么搞?
现在我们的数据库还有实体类层已经写好了
现在要做的就是使用接口来执行sql
接口 UserDao 写了5条方法
我们需要在Resource目录下新建mapper 来进行注册关联上mybatis
这几个方法都是简单的执行sql语句
唯一比较难得就是 进行参数的传参:
<select id="findByNameAge" resultType="cn.wd.entity.User">
select * from users where name=#{name1} and age=#{age1};
</select>
这里的name1 和 age1 和 接口层必须相同
接口层@Param("name1") String nane
这个@Param就是参数 然后 String name 是为了后面调用测试类时候显示的参数名字而已,没有调大的实际意义
<insert id="insOne" parameterType="cn.wd.dao.UserDao"
useGeneratedKeys="true" keyProperty="id">
insert into users(name ,age) values (#{name},#{age});
</insert>
这个 key 是 添加的主键,测试方法时会显示出来你加主键的值
测试方法:
@Test
public void findAll() throws Exception {
Reader reader = Resources.getResourceAsReader("conf.xml");
//使用文件流读取核心配置文件sqlMapConfig.xml
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
// 创建SqlSessionFactory工厂
SqlSession ss = ssf.openSession();
// 取出sqlSession的对象
UserDao ud = ss.getMapper(UserDao.class);
//进行查询的业务操作
List<User> list = ud.findAll();
//输出结果
System.out.println(list);
//提交sql
ss.commit();
//关闭sql
ss.close();
}
测试的是查询所有的方法,很简单吧
还有为什么是getMapper传了个class 可以看这篇文章:
Mybatis中getMapper方法源码解析_子夕听雨的博客-CSDN博客_getmapper方法
其他几个方法测试:
@Test
public void insOne() throws Exception {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession ss = ssf.openSession();
UserDao ud = ss.getMapper(UserDao.class);
User user = new User("逗子23", 22);
System.out.println(user);
int c = ud.insOne(user);
System.out.println(user);
System.out.println(c);
ss.commit();
ss.close();
}
@Test
public void upOne() throws Exception {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession ss = ssf.openSession();
UserDao ud = ss.getMapper(UserDao.class);
User user = new User(6, "逗子7", 22);
int c = ud.upOne(user);
System.out.println(c);
ss.commit();
ss.close();
}
@Test
public void delOne() throws Exception {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession ss = ssf.openSession();
UserDao ud = ss.getMapper(UserDao.class);
int c