简介
MyBatis 本是apache的一个开源项目iBatis,是一个基于Java的持久层框架,用来写dao。
mybatis的特点:
1 只要两个jar文件+配置几个sql映射文件,自带连接池
2 sql写在xml里,便于统一管理和优化
3 sql和代码的分离,提高了可维护性
4 提供映射标签,支持对象与数据库的orm字段关系映射
5 提供对象关系映射标签,支持对象关系组建维护
6 提供xml标签,支持编写动态sql
- Mybatis是对JDBC的封装,核心是在编写xml配置文件。
- 结构图
Mybatis环境搭建
- 在pom.xml中配置
<dependencies>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--日志包-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
- 再导入log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
- mybatis开发流程
1 创建SqlSessionFactoryBuilder对象
2 创建SqlSessionFactory对象
3 加载SqlMapConfig.xml配置文件
4 创建SqlSession对象
5 执行SqlSession对象执行删除
6 打印结果
7 释放资源
Mybatis增删改查
- 查询数据
(1)parameterType:传入某个类型的参数,指定参数类型
(2)resultType:某个对象实例
(3)selectOne只能查询一条记录
(4)selectList可以查询一条或多条记录 (推荐使用)
查询多条数据
List<User> list= sqlSession.selectList("com.dsf.bean.User.findByUserName2","张");
for(User user:list){
System.out.println(user);
}
- 插入数据
mybatis默认不会提交事务,所以如果是增删改,则需要手动提交事务
java代码:
@Test
public void test02SaveUser(){
SqlSession sqlSession = MySessionUtils.getSession();
User user = new User();
user.setUsername("tom");
user.setSex(1);
user.setBirthday(new Date());
user.setAddress("北京");
sqlSession.insert("com.xxx.bean.User.saveUser",user);
sqlSession.commit();
sqlSession.close();
}
映射文件:
<insert id="saveUser" parameterType="com.xxx.bean.User" >
insert into user values(null,#{username},#{birthday},#{sex},#{address});
</insert>
- 修改数据
java代码:
@Test
public void test03UpdateUser(){
SqlSession sqlSession = MySessionUtils.getSession();
User user = new User();
user.setId(10);
user.setUsername("tom");
user.setSex(2);
user.setBirthday(new Date());
user.setAddress("湖南");
sqlSession.update("com.dsf.bean.User.updateUser",user);
sqlSession.commit();
sqlSession.close();
}
映射文件:
<update id="updateUser" parameterType="com.dsf.bean.User">
update user set username = #{username},birthday=#{birthday},sex=#{sex},address=#{address} where id =#{id}
</update>
- 删除数据
映射文件:
<delete id="deleteById" parameterType="int">
delete from user where id = #{id};
</delete>