数据库连接创,释放资源平凡造成资源浪费从而影响系统性能
sql语句不利于维护
概念
mybatis是一个优秀的局域java的持久型框架
你只需要关注sql语句,动态的生成最中的sql语句并执行数据库的连接
采用的ORM思想解决了实体和数据的映射sentinel,对jdbc进行了封装,平不了jdbcapi底层访问的细节
把复杂的jdbc底层都屏蔽了,让我们更加专注的写sql语句,mybatis做了一个映射,不用手动的封装数据
入门 www.mybatis.org
1添加mybatis坐标
(mysql-connector-java),(mybatis,3.4.6)(log4j 日志)
2创建表
3创建对应的POJO
4编写映射文件,UserMapper.xml(约束头DTD约束),(同名的加个包)
<mapper namespace="userMapper">//命名空间结合id调用对应的sql
//查询
<select id="findAll" resultType="POJO权限命名">
select * from user//这个结果集封装到指定的POJO
</select>
//插入
<iniert id="save" parameyerType="POJO权限命名">
insert into user values(#{id},#{username,#{password})//这里不能写"?,?,?..."写POJO里边的属性名称
</insert>
//修改
<uppdate id="update" parameterType="POJO权限命名">
update user set username=#{username},password=$#{password},id= #{id}
</update>
//删除
<delete id="delete" parameterType="POJO权限命名">
delete from user where id=#{id}//这里一个参数写啥都可以
</delete>
</mapper>
5核心文件
sqlMapConfig.xml(sql映射)(核心文件的约束头)
<configuration>
//获取配置文件
<peroperties resource="jdbc.properties"/>
//定义别名
<typeAliases>
<typeAlias type="POJO权限命名"alias="user"/>
</typeAliases>
//数据源环境
<envronments default="developement">
<environment id="developement">
<transactionMananger type="JDBC"/>//这个JDBC要大写
<dataSource type="POOLED">//大写的
<property name="driver" value="${jdbc.driver}">
<property name="url" value="${jdbc.url}">
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource >
</environment >
</envronments>
//加载映射文件
<mappers>
<mapper resource="com/itheima/mapper/UserMapper.xml"/>
</mappers>
</cafiguration>
//测试
//insert 模拟User user= new User();
user.setId(7)
user.setUsername("tom");
user.setPassword(123);
1.获得核心配置文件
InputStream resourCeAsStream = Resources.getResourceAsStream("sqlMapConfig.xml")
2.获取SqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSeesionFactoryBuilder().build(resourCeAsStream )
3.获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession(true)//这里设置为true它就自动提交事务
4.通过得到的session对象获取sql语句
select : List<User> user = sqlSession.select("userMapper.findAll")
insert : sqlSession.insert("userMapper.save",user);//这要虚拟对象
update : sqlSession.update("userMapper.update",user);//需要虚拟对象
delect : sqlSession.delete("userMapper.delete",6);//根据id删就直接传数字,多条件的删除也是传user
//mybatis执行更新操作,需要提交事务
sqlSession.commit();
5.释放资源
sqlSession.class();
API
SqSSession工厂构建器
|
|