部门网站建设管理,腾讯云注册域名dnspod,六安市建设局网站,福清网络推广CRUD
1.namespace
namespace中的包名要和mapper接口的包名一致#xff01;
2.select
选择查询语句
id#xff1a;就是对应的namespace中的方法名#xff1b;
resultType:Sql语句执行的返回值#xff01;
parameterType#xff1a;参数类型
增删改必须提交事务
2.select
选择查询语句
id就是对应的namespace中的方法名
resultType:Sql语句执行的返回值
parameterType参数类型
增删改必须提交事务sqlSession.commit();
1.编写接口
ListUser getUserList();//根据id查询用户User getUserById(int id);//insert一个用户;int addUser(User user);//修改用户int updateUser(User user);//删除用户int deleteUser(int id);2.编写对应的mapper中的Sql语句
select idgetUserList resultTypepojo.Userselect * from mybatis.user/selectselect idgetUserById parameterTypeint resultTypepojo.Userselect * from mybatis.user where id #{id}/selectinsert idaddUser parameterTypepojo.User insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});/insertupdate idupdateUser parameterTypepojo.Userupdate mybatis.user set name#{name},pwd#{pwd} where id #{id};/updatedelete iddeleteUser parameterTypeintdelete from mybatis.user where id #{id};/delete3.测试
public void test(){//1.获得SqlSession对象SqlSession sqlSession MybatisUtils.getSqlSession();//2.执行Sql--方式一getMapperUserMapper userDao sqlSession.getMapper(UserMapper.class);ListUser userList userDao.getUserList();for (User user : userList) {System.out.println(user);}//关闭SqlSessionsqlSession.close();}public void getUserById(){SqlSession sqlSession1 MybatisUtils.getSqlSession();UserMapper mapper sqlSession1.getMapper(UserMapper.class);User user mapper.getUserById(1);System.out.println(user);sqlSession1.close();}3.Insert
public void addUser(){SqlSession sqlSession MybatisUtils.getSqlSession();UserMapper mapper sqlSession.getMapper(UserMapper.class);mapper.addUser(new User(5,jim,123123));//提交事务sqlSession.commit();sqlSession.close();}4.Update
public void updateUser(){SqlSession sqlSession MybatisUtils.getSqlSession();UserMapper mapper sqlSession.getMapper(UserMapper.class);mapper.updateUser(new User(5,jack2,123456));sqlSession.commit();sqlSession.close();}5.Delete
public void deleteUser(){SqlSession sqlSession MybatisUtils.getSqlSession();UserMapper mapper sqlSession.getMapper(UserMapper.class);mapper.deleteUser(5);sqlSession.commit();sqlSession.close();}万能的Map
假设我们的实体类或者数据库中的表字段或者参数过多我们应当考虑使用Map!
int addUser2(MapString,Objectmap);insert idaddUser2 parameterTypemap insert into mybatis.user (id,name,pwd) values (#{userid},#{username},#{userpwd});/insertpublic void addUser2(){SqlSession sqlSession MybatisUtils.getSqlSession();UserMapper mapper sqlSession.getMapper(UserMapper.class);MapString, Object map new HashMapString, Object();map.put(userid,5);map.put(username,jack3);map.put(userpwd,123123);mapper.addUser2(map);sqlSession.commit();sqlSession.close();}模糊查询
1.在Java代码执行的时候传递通配符%%
ListUser userList userDao.getUserList2(%李%);select * from mybatis.user where name like #{values};2.在sql拼接中使用通配符
select * from mybatis.user where name like %#{values}%;ListUser userList userDao.getUserList2(李);配置解析
mybatis-config.xml
mybatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息
configuration配置
properties属性
settings设置
typeAliases类型别名
typeHandlers类型处理器
objectFactory对象工厂
plugins插件
environments环境配置
environment环境变量
transactionManager事务管理器
dataSource数据源
databaseIdProvider数据库厂商标识
mappers映射器db.properties
drivercom.mysql.jdbc.Driver
urljdbc:mysql://localhost:3306/mybatis?serverTimezoneAsia/ShanghaiuseSSLfalseuseUnicodetruecharacterEncodingUTF-8
usernameroot
password123456可以直接引入外部文件
可以在其中增加一些属性配置
如果两个文件有同一个字段优先使用外部配置文件的
类型别名typeAliases
!--可以给实体类起别名--typeAliasestypeAlias typepojo.User aliasuser//typeAliases扫描实体类的包它的默认别名就是这个类的类名首字母小写
typeAliasespackage namepojo/
/typeAliases实体类比较少的时候使用第一种
实体类多的时候使用第二种
第一种可以DIY别名第二种不可以可以使用注解alias
映射器
mappersmapper resourcedao/UserMapper.xml//mappers作用域和生命周期
SqlSessionFactoryBuilder:一旦创建SqlSession就不在需要一般设置为局部变量
SqlSessionFactory:可以理解为数据库连接池一旦被创建就一直存在
SqlSession:可以理解为连接池中的请求实例是不安全的线程不能被共享使用完毕就关闭。
属性名和字段名不一致问题
解决办法起别名
select idgetUserById parameterTypeint resultTypeuserselect id,name, pwd as password from mybatis.user where id #{id}/selectresultMap结果集映射
resultMap idUserMap typeuserresult columnid propertyid/result columnname propertyname/result columnpwd propertypassword//resultMap
select idgetUserById resultMapUserMapselect * from mybatis.user where id #{id}/select