目录结构:

1.封装 mybatis 的工具类:

MybatisUtil.java

public class MybatisUtil {
private static SqlSessionFactory getSqlSessionFactory() throws IOException{
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
return new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSession getSqlSession() throws IOException{
//填写参数 true表示事务自动提交
return getSqlSessionFactory().openSession(true);
}
}

2.vo类

User.java

 public class User implements Serializable{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}

3.映射文件

UserMapper.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">
<!--
namespace用来指定映射文件的命名空间,在这里通过namespace可以找到该空间下的所有的
sql语句映射。namespace的命名通常和应该映射文件所在【包名+映射文件名】
-->
<mapper namespace="cn.sxt.vo.UserMapper">
<select id="findAll" resultType="User">
select * from t_user
</select> <!-- select用来编写查询的sql语句 id在同一个namespace下是唯一的。
parameterType用来指定参数类型
#{id} 占位符 输入参数将会填充。建议和参数名要相同
resultType 用来指定返回值类型
-->
<select id="selectUser" parameterType="int" resultType="User">
select * from t_user where id = #{id}
</select>
<!-- insert用来映射插入语句
useGeneratedKeys 为true表示使用主键自增策略
parameterType用来指定参数类型
占位符中的 名称是参数的属性名,并且要提供get/set方法
-->
<insert id="insertUser" useGeneratedKeys="true" parameterType="User">
insert into t_user(name,age) values(#{name},#{age})
</insert>
<!-- delete 用来指定删除语句 -->
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>
<!-- update 用来指定更新语句 -->
<update id="updateUser" parameterType="User">
update t_user set name=#{name},age=#{age} where id=#{id}
</update>
</mapper>

4.核心配置文件

mybatis.cfg.xml

<?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>
<!-- 它们都是外部化,可替代的属性。可以配置在一个典型的Java 属性文件中,或者通过
properties 元素的子元素进行配置 -->
<properties resource="jdbc.properties"></properties>
<!-- 别名是一个较短的Java 类型的名称。用来设置别名 -->
<typeAliases>
<!-- 为指定的包下所有类设置别名,别名默认为类名 -->
<package name="cn.sxt.vo"/>
<!-- 为指定的类型设置别名
<typeAlias type="cn.sxt.vo.User" alias="User"/>
-->
</typeAliases>
<!-- MyBatis 能够配置多套运行环境,这有助于将您的SQL 映射到多个数据库上。例如,在您的
开发、测试、生产环境中,您可能有不同的配置。
default指向默认使用的环境
-->
<environments default="development">
<environment id="development">
<!--
JDBC – 这个配置直接使用JDBC 的提交和回滚功能。它依赖于从数据源获得连接来管理
事务的生命周期。
• MANAGED – 这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让
容器(例如:Spring 或者J2EE 应用服务器)来管理事务的生命周期。
-->
<transactionManager type="JDBC" />
<!--
UNPOOLED – 这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。
POOLED – 这个数据源的实现缓存了JDBC 连接对象,用于避免每次创建新的数据库连接时都初始
化和进行认证,加快程序响应。并发WEB 应用通常通过这种做法来获得快速响应。
JNDI – 这个数据源的配置是为了准备与像Spring 或应用服务器能够在外部或者内部配置数据
源的容器一起使用,然后在JNDI 上下文中引用它。
-->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- sql语句的映射文件配置 -->
<mapper resource="cn/sxt/vo/UserMapper.xml"/>
</mappers>
</configuration>

jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=1111

5.测试

MybatisTest.java

public class MybatisTest {
@Test
public void testAdd() throws IOException{
User user = new User();
user.setName("刘德华");
user.setAge(55);
SqlSession session = MybatisUtil.getSqlSession();
//增 删 改 返回值为受影响的行数
session.insert("cn.sxt.vo.UserMapper.insertUser", user);
session.close();
}
@Test
public void testUpdate() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
User user=session.selectOne("cn.sxt.vo.UserMapper.selectUser", 1);
user.setName("彰五金");
session.update("cn.sxt.vo.UserMapper.updateUser",user);
session.close();
}
@Test
public void testDelete() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
session.delete("cn.sxt.vo.UserMapper.deleteUser", 3);
session.close();
}
@Test
public void testFindAll() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
for(User u:list){
System.out.println(u);
}
session.close();
}
}

最新文章

  1. 利用 HashSet 去过滤元素是否重复
  2. [PHP] - mysql 数据库操作
  3. MySQL MEM_ROOT详细讲解
  4. js动态生成二维码图片
  5. C 和 Object- C 中得 #ifdef 和#ifndef
  6. 选择题(codevs 2919)
  7. python学习之认识字符串
  8. 狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(2)
  9. Softnet_data
  10. Chapter 2 Build Caffe
  11. IE 动态绑定click事件
  12. ecshop模板修改后还原的原因
  13. IOS开发之动态获取模型的属性值
  14. 私人定制javascript事件处理机制(浅谈)
  15. js详解之作用域-实例
  16. Angular记录(7)
  17. springboot vue简单整合
  18. nodefs模块的使用demo
  19. ubuntu14.04下 Kinect V2+Ros接口安装
  20. Python2.7-argparse

热门文章

  1. Mongoose 两个表关联查询aggregate 以及 Mongoose中获取ObjectId
  2. 一种SpaceClaim抽取流道的方法——利用缺失的面功能
  3. pm2 启动模式 fork 和 cluster 的区别
  4. 将jar包导入maven本地仓库
  5. java项目中使用ffmpeg剪辑部分视频
  6. Vue系列——动态设置img标签的src属性
  7. C# winform选择文件、选择文件夹、打开文件
  8. js中[object Object]与object.prototype.toString.call()
  9. 运维笔记--给正在运行的Docker容器动态绑定卷组(挂载指定目录)
  10. redis创建集群至少需要几个节点?至少需要几个master节点?