您的位置:首页 > 数据库

Mybatis简单的操作数据库

2017-10-14 11:54 302 查看

Mybatis

最简单的用Mybatis实现对数据库表的增删改查,内容详细,初学者可以快速实现功能.

Mybatis介绍

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

Mybatis特点

简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

提供映射标签,支持对象与数据库的orm字段关系映射

提供对象关系映射标签,支持对象关系组建维护

提供xml标签,支持编写动态sql

Mybatis配置过程

1.添加必要的jar包

添加到pom.xml


<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>


<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>


添加到pom.xml的<build>标签中


<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>


2.添加config.xml

添加到resource文件夹下




这个配置文件中,所有的标签都有严格的顺序

<environments default="${env_choosen}">
<environment id="deve">
<transactionManager type="JDBC"></transactionManager>
<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>
</environments>


自动读取mapper包下的所有xml文件


<mappers>
<mapper resource="com/lanou/mapper/StudentMapper.xml"/>
<package name="com.lanou.mapper"/>


3.与config.xml对应的db.properties



jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db0602
jdbc.username=root
jdbc.password=123456

env_choosen=deve


4.定义实体类

实体类的属性和表的字段名称一一对应

数据库表:




实体类:




5.定义操作实体类表的接口xxxMapper



定义操作数据库的方法


增加(两种添加方法)

void insertStu(Student student);


void insertStudent(@Param("sname") String name);


删除(根据id删除)

void delStu(@Param("sid"
4000
) Integer id);


更改

void updateStu(Student student);


查询

查询所有

List<Student>findAllStudent();


按id查询

java

List<Student>findById(@Param("id") Integer id);


6.定义操作表的sql映射文件XXXMapper.xml



SQL语句写在mapper标签中(namespace 一般写对应接口的路径)

<mapper namespace="com.lanou.mapper.StudentMapper">


MyBatis的结果映射

当实体类的属性名和数据库表的列名不一致的情况下,

需要使用结果映射来确保数据的一致性

column:数据库表的列名

property:实体类的属性名

java

<resultMap id="BaseMap" type="com.lanou.bean.Student">

<id column="id" property="id"/>

<result column="name" property="name"/>

</resultMap>


增加(两种添加方法)

<insert id="insertStu" parameterType="com.lanou.bean.Student">
INSERT INTO student VALUES (NULL ,#{name})
</insert>


<insert id="insertStudent">
INSERT INTO student VALUES (NULL ,#{sname})
</insert>


删除(根据id删除)

<delete id="delStu" parameterType="com.lanou.bean.Student">
DELETE FROM student WHERE id =(#{sid})
</delete>


更改

<update id="updateStu">
UPDATE student SET name=#{name} WHERE id=#{sid};
</update>


查询

查询所有

<select id="findAllStudent" resultMap="BaseMap">
SELECT <include refid="Column_List"/> FROM student;
</select>


按id查询

java

<select id="findById" resultMap="BaseMap">

SELECT * FROM student WHERE id = #{id}

</select>


7.创建test类测试代码

从 XML 中构建 SqlSessionFactory


加载config文件

String re = "config.xml";
InputStream stream = Resources.getResourceAsStream(re);


创建SqlSessionFactory

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);


生产sqlSession对象

SqlSession session = factory.openSession();


获取mapper对象

xxxMapper mapper = session.getMapper(xxxMapper.class);


调用方法获取结果

增加

Student stu = new Student();
stu.setName("zhaoliu");
mapper.insertStu(stu);
session.commit();
session.close();


mapper.insertStudent("wangwu");
session.commit();
session.close();


删除

mapper.delStu(1);
session.commit();
session.close();


更改

mapper.updateStu(stu);
session.commit();
session.close();


查询

查询所有

List<Student> studentList = mapper.findAllStudent();
System.out.println(studentList);


按id查询

List<Student> studentList = mapper.findById(1);
System.out.println(studentList);


8.总结

最后的结构视图




通过以上操作可以简单实现对数据库表的增删改查.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息