CRUD
1、namespace
namespace中的包名要和Dao/mapper接口的包名一致
2、select
-
选择,查询语句;
- id:就是对应的namespace中的方法名
- resultType:Sql语句执行的返回值!
- parameterType:参数类型
实现增删改查就是添加响应的接口方法,修改对应的mapper。最重要的一点是增删改需要提交事务
@Test
public void insertUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int k = mapper.insertUser(new User(4, "老六", "666666"));
if(k > 0) {
System.out.println("插入成功!");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
Map使用
假设,实体类,或者数据库中的表,字段或者参数过多,应当考虑使用Map!
int addUser(Map<String, Object> map);
<insert id="addUser" parameterType="map">
insert into bjw.user (id, pwd) values (#{userid},#{passWord})
</insert>
@Test
public void addUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid",5);
map.put("passWord","222233");
mapper.addUser(map);
sqlSession.commit();
sqlSession.close();
}
结果
1,狂神,123456
2,张三,123456
3,李四,123456
4,老六,666666
5,null,222233
Map传递参数,直接在sql中取出key即可!
对象传递参数,直接在sql中取对象的属性即可!
只有一个基本类型参数的情况下,可以直接在sql中取到!
多个参数用Map
配置解析
1、核心配置文件
~ MyBatis
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
属性优化、别名优化、设置等的内容,详见Mybatis官网
Mybatis官网
映射器(mappers)
MapperRegistry:注册绑定我们的Mapper文件
方式一:【推荐使用】
<mappers>
<mapper resource="com/bjw/dao/UserMapper.xml"/>
</mappers>
方式二:使用class文件绑定注册
<mappers>
<mapper class="com.bjw.dao.UserDao"/>
</mappers>
注意点:
~接口和它的mapper配置文件必须同名
~接口和它的mapper配置文件必须在同一个包下
方式三:使用扫描包进行注入绑定
<mappers>
<package name="com.bjw.dao"/>
</mappers>
注意点:
~接口和它的mapper配置文件必须同名
~接口和它的mapper配置文件必须在同一个包下