Mybatis概念
MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发。
持久层:
负责将数据到保存到数据库的那一层代码。
以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进行了封装。
JavaEE三层架构:表现层、业务层、持久层
框架:
框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。
在框架的基础之上构建软件编写更加高效、规范、通用、可扩展。
Mybatis的操作比Web的操作方法更简洁,代码量更少。和Web一样使用分层操作,今天先从简单的查询,根据id查询,新增和删除说起。
这是所需要的包,需要注意的是mydatis.xml文件要创建在src里面。

这是需要的架包

第一步设置构造方法在bean包的User里

第二步获取数据库的连接

第三步定义抽象方法

第四步映射

最后一步就可以用batis方法进行测试了

首先把常用的方法提取出来
InputStream stream = null;
SqlSessionFactoryBuilder builder = null;
SqlSessionFactory factory = null;
SqlSession sqlSession = null;
UserDao userDao = null;
连接jdbc和关闭资源都是重复操作我们可以也把他们提出来用 @Before(首先运行此方法)和 @After(最后运行此方法)。
@Before
public void init() throws IOException {
//1.加载核心配置文件的字节输入流
stream = Resources.getResourceAsStream("mydatis.xml");
//2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
builder = new SqlSessionFactoryBuilder();
//3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
factory = builder.build(stream);
//4.通过工厂对象获取SqlSession对象----执行JDBC操作的
sqlSession = factory.openSession();
//5.通过SqlSession对象获取接口对应的代理对象
userDao = sqlSession.getMapper(UserDao.class);
}
@After
public void distroy() throws IOException {
//资源的释放
sqlSession.commit();
sqlSession.close();
stream.close();
}
接下来就是查询,根据id查询,新增,删除。
@Test
//全查
public void testSelectAll() throws IOException {
//6.通过代理对象执行查询方法
List<User> userList = userDao.selectAll();
//7.遍历集合
for (User user : userList) {
System.out.println(user);
}
}
@Test
//根据id查询
public void testSelectByUid() throws IOException{
User user = userDao.selectByUid(1);
System.out.println(user);
}
@Test
//添加
public void testAdd() throws IOException {
User user = new User();
user.setUsername("mydatis");
user.setPassword("666");
user.setPhone("110");
user.setAddress("github");
int n = userDao.add(user);
if (n > 0) {
System.out.println("add success");
}
}
@Test
//删除
public void tesDelete(){
int n = userDao.delete(4);
if (n>0){
System.out.println("delete success");
}
}
mybatis的模糊查询可以通过#{}和${}另种方式,但是两种方式有一定的区别和细节。
定义接口方法:
/*** 测试模糊查询
* @param mohu
* * @return
* */
List<User> testMohu(@Param("mohu") String mohu);
1、使用${}进行模糊查询
<!--List<User> testMohu(@Param("mohu") String mohu);--> <select id="testMohu" resultType="User">
select * from user where username like '%${mohu}%'
</select>
2、使用#{}
第一种方式:
使用concat()
<!--List<User> testMohu(@Param("mohu") String mohu);--> <select id="testMohu" resultType="User">
select * from t_user where username like concat('%',#{mohu},'%')
</select>
第二种方式:
<!--List<User> testMohu(@Param("mohu") String mohu);--> <select id="testMohu" resultType="User">
select * from t_user where username like "%"#{mohu}"%"
</select>
注意:
模糊查询方式的细节主要在like后面的部分,一定不要弄混