Mybatis入门到精通-note1

2018-04-04  本文已影响91人  言西枣

简介

简单使用

  1. 数据库
  2. mybatis-config.xml里面配置settings、typeAliases、environments、mappers
  3. 实体类与mapper.xml
  4. 通过config创建SqlSessionFactory,然后获取SqlSession,
List<Country> countryList = sqlSession. selectList (” selectAll ” );
  1. 底层通过JDBC执行SQL,获取ResultSet后,根据resultType的配置进行映射,返回查询结果
  2. 关闭资源

特别注意

3.0与2.0

XML方式

select
<setting name=”mapUnderscoreToCamelCase” value=”true”/>

将数据库字段自动转换为Java对象的属性值,不需要配置别名

UserMapper userMapper = sqlSession . getMapper (UserMapper . class) ;
<select id=”selectRolesByUserid” resultType=”tk.mybatis .simple .model .SysRole”> select
r.id,
r.role name roleName,
r .enabled,
r .create by createBy,
r.create time createTime,
u.user name as ”user.userName”, 
u.user email as ”user.userEmail ”
from sys user u
inner join sys user role ur on u.id = ur.user id 
inner join sys role r on    =    
where u.id = #{user!d}
</select>
insert
update
delete
多个接口参数
Mapper接口动态代理实现原理
public class MyMapperProxy<T> implements InvocationHandler { 
    private Class<T> mapperinterface;
    private SqlSession sqlSession;
    public MyMapperProxy(Class<T> mapperinterface, SqlSession sqlSession) { 
        this .mapperinterface = mapperinterface;
        this.sqlSession = sqlSession ;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        List<T> list= sqlSession.selectList(mapperinterface.getCanonicalName() + ” . ” + method .getName());                       
        return list;  
    }
}

调用

SqlSession sqlSession = getSqlSession() ;

MyMapperProxy userMapperProxy = new MyMapperProxy(UserMapper.class, sqlSession) ;
UserMapper userMapper = (UserMapper) Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader() , new Class[]{UserMapper.class},
userMapperProxy) ;
                 
List<SysUser> user= userMapper.selectAll();

注解方式

动态SQL

if
choose
where set trim
foreach
bind
<bind name="userNameLike" value="'%' + userName + '%'" />

可以创建一个变量绑定到上下文,value是OGNL表达式

OGNL
上一篇 下一篇

猜你喜欢

热点阅读