模糊查询
推荐使用这种方式,使用的prepareStatement的方式
List<User> findByNameLike(String name);
<select id="findByNameLike" parameterType="String" resultType="com.kcl.pojo.User">
select * from user where username like #{name}
</select>
List<User> users = mapper.findByNameLike("%李%");
或者写成这个样子,必须写成value, 调用时就不需要%
不推荐这种方式,应为sql语句是拼接的方式
<select id="findByNameLike" parameterType="String" resultType="com.kcl.pojo.User">
select * from user where username like '%${value}%'
</select>
ResultMap 查询结果的列名和实体类属性名对应关系
实体类字段
private String myAddress;
userDao实现本质 是 SQLSession底层操作
SQLSession创建SQLSession后,读取UserDao的字节码文件,实现userDao接口中的方法,
根据SQLSession的底层操作实现接口中的方法,这些方法由于mapper.xml中的定义相联系
SQLSession也与mybatisConfig相联系
//读取字节码文件
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> users = userDao.findAll();
userDao 本质是
List<User> users2 = sqlSession.selectList("com.kcl.dao.UserDao.findAll");
defaultSqlsession.selectList()
CatchingExecutor.query()
return BaseExecutor.doQuery()
SimpleExecutor.doQuery()
RoutingStatementHandler.query()
PrepareStatementHandler.query() .execute();
// addUser(User user);
sqlSession.insert("com.kcl.dao.UserDao.addUser",user);
DefaultSQLSession.update(statement)
CatchingExecutor.update()
BaseExecutor.update()
SimpleExecutor.doUpdate();
RoutingStatementHandler.update()
PrepareStatementHandler.execute()
// updateUser(User user);
sqlSession.update("com.kcl.dao.UserDao.updateUser",user);
// deleteUser(int id);
sqlSession.update("com.kcl.dao.UserDao.deleteUser",id);
查询一个用户
User user = sqlSession.selectOne("com.kcl.dao.UserDao.findById",id);
Properties
properties文件 &s; => &
diver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis02?useSSL=false&useUnicode=true&characterEncoding=utf-8
username=root
password=kclkd2013
TypeAliases Package
类型别名是为java类型设置一个短的名字。它只和XML配置有关,存在的意义仅在于用来减少类完全限定名的冗余。
typeAliases(类型别名)
<!--类型别名-->
<typeAliases>
<!-- typeAlias type="com.kcl.pojo.User" alias="user"/-->
<package name="com.kcl.pojo"></package>
</typeAliases>
package: 用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名
并且类名就是别名,不在区分大小写
<select id="getUserList" resultType="user" >
select * from mybatis02.user;
</select>