mybatis是一款优秀的持久层框架,用于简化jdbc开发
硬编码(连接,赋值,结果集)、操作繁琐
https://mybatis.net.cn/getting-started.html
● 在resources中新建一个配置文件mybatis-config.xml,内容如下:
模板在mybatis的官网有
<!--加载sql映射文件-->
将下面的实体类对应的mapper绑定到mybatis中,resource和class都可以
--
--
● 映射sql语句
在resources中新建一个User(表名)Mapper.xml文件
● 建立表对应的实体类
● 定义dao接口,里面是增删改查的接口,之前都是在定义类实现dao接口,里面写增删改查的方法,连接数据库,执行sql,但是现在不用了,上面的User配置xml直接相当于之前实现dao的类了,里面直接写sql语句就可以了,不用写过多的sql执行逻辑,这里叫做mapper
● 最终代码执行,当然创建sqlSession的这几行代码也是官网固定的,可以写一个工具类方里面,返回sqlSession就可以了
// 1、 加载mybatis的核心配置文件,获取SqlSessionFactory
// 官网有
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 2、获取对应的SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.getMapper(UserDao.class).selectAll.....
//3、执行sql
sqlSession.selectList(test.selectAll); // 命名空间+id,直接返回
不能识别数据库连接
更新字段不固定,造成各种原因的错误
逗号的问题、set的问题(不传参数时)
eg:
update aaa
set
and street_name = #{streetName},
and tt = #{tt}
where id = #{id}
更改后:
● 将 set也写成标签的形式
update aaa
street_name = #{streetName},
and tt = #{tt}
where id = #{id}
delete from tb_brand
where id in
#{id}
将多个数据id装入数据中,遍历数组就可以实现批量删除
ids:为数组名称
mybatis底层提供了一个ParamNameResolver类来进行封装