目录
一、环境搭建
1、导入MyBatis的坐标和其他相关坐标
2、创建数据表
3、编写实体类
4、编写Mapper映射文件(xml开发需要编写)
5、编写配置文件(可选择将配置文件内容直接写入核心文件)
6、 编写MyBatis核心文件
二、使用
1、定义接口(xml开发)
1、定义接口(注解开发)?
2、service层调用?
三、两种开发模式对比
一、环境搭建
1、导入MyBatis的坐标和其他相关坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>MyBatis</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>3.7.5</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
2、创建数据表
3、编写实体类
public class User {
private int id;
private String username;
private String password;
private Date birthday;
//以及相应的get、set、toString方法
}
4、编写Mapper映射文件(xml开发需要编写)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserMapper">
<mapper namespace="userMapper">
<select id="findAll" resultType="domain.User">
select * from User
</select>
</mapper>
5、编写配置文件(可选择将配置文件内容直接写入核心文件)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=998516
6、 编写MyBatis核心文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 通过properties标签加载外部properties文件-->
<properties resource="jdbc.properties"></properties>
<!-- 注意:typeAliases标签的位置需要处于properties标签、settings标签后面,其它标签的前面!!!!-->
<!-- 自定义别名-->
<typeAliases>
<!-- mybatis已经把基本数据类型的别名封装好了-->
<typeAlias type="domain.User" alias="user"></typeAlias>
<typeAlias type="domain.Order" alias="order"></typeAlias>
<typeAlias type="domain.Role" alias="role"></typeAlias>
</typeAliases>
<!-- 注册类型处理器-->
<typeHandlers>
<typeHandler handler="handler.DateTypeHandler"></typeHandler>
</typeHandlers>
<!-- 配置分页插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"></property>
</plugin>
</plugins>
<!--数据源环境-->
<environments default="developement"> <!--default用于选择默认environment -->
<environment id="developement">
<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>
<!-- 加载映射文件 (xml开发) -->
<mappers>
<mapper resource="mapper/UserMapper.xml"></mapper>
<mapper resource="mapper/OrderMapper.xml"></mapper>
</mappers>
<!-- 加载映射关系 (注解开发)-->
<mappers>
<!-- 指定接口所在的包-->
<package name="dao"/>
</mappers>
</configuration>
二、使用
1、定义接口(xml开发)
1、定义接口(注解开发)?
//保存
@Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
public void save(User user);
// 删除
@Delete("delete from user where id=#{id}")
public void delete(int id);
// 修改
@Update("update user set username=#{username} , password=#{password} where id=#{id}")
public void update(User user);
//查询所有
@Select("select * from user")
public List<User> findAll() throws IOException;
//根据id查询
@Select("select * from user where id=#{id}")
public User findById(int id);
2、service层调用?
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.findAllOrder();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
三、两种开发模式对比
1.从开发效率来说,注解编写更简单,效率更高。
2.从可维护性来说,注解如果要修改,必须修改源码,会导致维护成本增加;xml维护性更强。
建议:
单表操作的情况,可以使用注解查询,因为单表操作,SQL变化的几率很小 多表复杂查询时,建议用XML方式,可维护性更好,更灵活 ?
|