MyBatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。

不使用框架

public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root", "root");
//定义sql语句 ?表示占位符
String sql = "select * from user where username = ?";
//获取预处理statement
preparedStatement = connection.prepareStatement(sql);
//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1, "尼古拉斯赵六");
//向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//遍历结果集并释放资源

编写xml文件方式

1.导入依赖坐标

2.编写实体类和接口

public class User implements Serializable{
private String Username;
private Integer age;
} public interface UserService{
List<User> findAll();
}

3.编写持久层接口的映射配置文件UserService.xml

<mapper namespace="xx.xx.UserService">
<!--方法名,实体类全类名,接口全类名-->
<select id="findAll" resultType="xx.xx.User">
select * from user
</select>
</mapper>

4,编写核心配置文件SqlMapConfig.xml

<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/martin"/>
<property name="username" value="root"/>
<property name="password" value="martin"/>
</dataSource>
</environment>
</environments> <!-- 指定映射配置文件的位置,映射配置文件指的是每个接口独立的配置文件 -->
<mappers>
<mapper resource="xx.xx.UserService.xml"/>
</mappers>
</configuration>

5.测试

public class MybatisTest {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建接口的代理对象
IUserDao userDao = session.getMapper(UserService.class);
//5.使用代理对象执行方法
List<User> users = UserService.findAll();
for(User user : users){
System.out.println(user);
}
//6.释放资源
session.close();
in.close();
}
}

使用注解方式

1.导入依赖坐标

2.编写实体类和接口,并在接口上使用注解

public interface UserService {
@Select("select * from user")
List<User> findAll();
}

3.在SqlMapConfig.xml中配置注解

<configuration>
.......
<!-- 指定映射配置文件的位置,使用class属性指定被注解的接口的全限定类名-->
<mappers>
<mapper class="xx.xx.UserService"/>
</mappers>
</configuration>

最新文章

  1. 推荐记录片系列:Ultimate Factories系列和MegaStructures系列
  2. Hibernate的持久化类状态
  3. jQuery - Chaining
  4. CodeForces - 445A - DZY Loves Chessboard解题报告
  5. ECSTORE2.0 定时任务配置
  6. logstash ArgumentError: comparison of String with 5 failed
  7. android cordova h5总结
  8. Go实现海量日志收集系统(四)
  9. SpringMVC中使用 MultipartFile 进行文件上传下载及删除
  10. ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。
  11. awk指定[]为分隔符
  12. 【HAOI2014】遥感监测
  13. MVC005之页面调用控制器中的方法
  14. service手动实例化(new)导致类中的spring对象无法注入的问题解决
  15. Flask莫名其妙特别慢
  16. STM8在IAR中Option Byte配置
  17. PostgreSQL内存结构图示
  18. OpenStack Keystone V3 简介
  19. Linux时间子系统(十六) clockevent
  20. 2017北京国庆刷题Day6 afternoon

热门文章

  1. 修改linux 动态ip为静态ip
  2. JS中new Date()用法及获取服务器时间
  3. openstack nova 创建虚机流程
  4. 仿京东BOE官网 css代码
  5. HYSBZ - 2243 树链剖分 + 线段树 处理树上颜色段数
  6. CF208E Blood Cousins 题解
  7. “大地主”IPV6的邻居发现BD
  8. 网站SEO优化技术转让奇人
  9. [ASP.NET Core开发实战]基础篇06 配置
  10. Unity图文混排