用mybatis框架实现增删改查

首先建立一个javaproject起名为firstblood-mybatis

然后建立一个和src同级的目录用来存放mybatis依赖的jar包,并build path

这些包的下载地址:

点击打开链接

添加Library   JUnit4过程:右键单击项目名->build path->add librarys..->选择JUnit->next->选择JUnit4->finish

beans中存放的java文件是数据的设计与数据库的保持一致。

dao中存放的是数据持久层操作的有关文件,应该先写接口,然后再自己实现它。

test中存放的是测试类,用来测试代码的正确性。

utils中存放的是自己为了避免代码的复用而写的工具类,一般来讲该类中的方法应该都是静态的

首先要实现增删改查必须有要增删改查的对象,接下来我们就演示一下对Student的增删改查

为了简单,所以设计Student只有4个成员分别是id(唯一标识),name(名字),age(年龄),score(成绩)

如图生成GettersAndSetters方法和重写toString方法全部勾选,这是为了使属性名和成员名一致,再加上默认的无参构造器,和参数为name、age和score的构造器

写完beans之后要在数据库中创建对应的表单,为了便于使用所以表的名字和beans中的类的名字一致,表的列名和类中的属性一致如图:表起名为student(我用的是mysql的可视化工具Navicat)

等表建立好后存储数据库的sql文件,右键点击数据库选择转储sql文件,选择要存放的路径(将文件存放到你的项目的db文件夹里),如图所示(这是为了以后将项目打包的时候别人可以直接考你的sql文件利用sql文件直接生成对应的数据库的表)

点击确定将数据库的sql文件导入项目中去。这时候就会发现项目的db文件夹中有了.sql文件

数据有了接下来就是对数据进行增删改查了

首先在dao包中建立一个interface接口文件,在其中写入你要实现的功能如图:

这些是我们准备要实现的方法的接口

接下来我们就要实现这些接口了,要实现增删改查,应该先和数据库建立联系,所以我们先写数据库的连接:

新建jdbc_mysql.properties文件如图这个文件中写连接mysql的4要素属性文件(注意这个文件中不能有空格,不能有空格,不能有空格):

然后写mybatis的主配置文件,在主配置文件用到properties的文件的时候value的值根据properties的文件中的名字来写才能取到值

这样就建立好连接了,注册映射这个的路径的文件是真正实现的增删改查的配置文件,在每一个dao的impl文件对应一个mapper.xml文件,调用的时候直接将mapper.xml文件添加到主配置文件中

接下来写dao的实现类StudentDaoImpl如图所示

这里Resources.getResourceAsStream方法读取主配置文件,然后通过SqlSessionFactoryBuilder.build方法创建一个SqlSessionFactory对象,SQLsessionFactory对象再调用自己的OpenSession方法创建一个sqlsession对象由调用的是无参方法,所以生产出的sqlsession的各个属性是默认的并将读取到的配置文件进行加载。

可以看出无参的openSession方法调用的是默认类型和另外两个参数分别为null和false的openSessionFromDataSource方法

其中的newTransaction方法源码如下,调用了JdbcTransaction(ds, level, autoCommit);

JdbcTransaction进行了赋值操作根据当时传入的值datasource有值而level为null ,autoCommit为false;

由此可以看出每个sqlsession的对象都是已经加载过mybatis.xml文件的默认的类型。

后面的insert是调用插入的方法,源码如下 :

可以看出insert的本质还是调用的update方法.

后面的commit方法是事务提交,如果不写的话增删改不能真正操作,如果只执行了前面的代码没有事务提交的话,会自己进行事务回滚,生成了key值但是没有将所有的数据提交上去,相当于浪费了一个key值,例如原本你数据库中的primarykey是自增的,然后增加一个人员信息,但是不提交事务,那么就会生成了一个key值,由于你没有提交所以不会有数据添加到数据库中,等到你下向数据库中添加一个人员信息时,提交了事务的时候就会发现这次的key值在上一条记录的基础上+2了。由于查找信息不会对数据库中的信息进行改变所以写不写事务提交都可以。不会发生什么改变。

最后要将sqlsession关闭。

这是以增加为例,其他的类似。

 

本文是写给自己的,写的不好,以后理解更深刻的时候会修改。

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis 是一个开源的持久化框架,可以帮助我们简化数据库操作的编写。下面是一个使用 MyBatis 实现增删改查系统的示例: 1. 配置 MyBatis 首先需要在项目中引入 MyBatis 的依赖,然后在项目中配置 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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 其中,配置文件中需要配置数据库的连接信息和映射文件的位置。 2. 创建数据表 在数据库中创建一个用户表,例如: ``` CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 3. 创建实体类 创建一个 User 实体类,例如: ``` public class User { private Integer id; private String name; private Integer age; // getter and setter } ``` 4. 创建映射文件 在项目中创建一个 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"> <mapper namespace="com.example.mapper.UserMapper"> <!-- 查询全部用户 --> <select id="findAll" resultType="User"> SELECT * FROM user </select> <!-- 根据 id 查询用户 --> <select id="findById" parameterType="int" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 新增用户 --> <insert id="insert" parameterType="User"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <!-- 修改用户 --> <update id="update" parameterType="User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <!-- 删除用户 --> <delete id="delete" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 其中,映射文件中定义了对应的 SQL 语句和参数类型。 5. 创建 DAO 层 创建一个 UserDAO 接口和实现类,例如: ``` public interface UserDAO { List<User> findAll(); User findById(Integer id); void insert(User user); void update(User user); void delete(Integer id); } public class UserDAOImpl implements UserDAO { private SqlSessionFactory sessionFactory; public UserDAOImpl(SqlSessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public List<User> findAll() { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); return mapper.findAll(); } } public User findById(Integer id) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); return mapper.findById(id); } } public void insert(User user) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.insert(user); session.commit(); } } public void update(User user) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.update(user); session.commit(); } } public void delete(Integer id) { try (SqlSession session = sessionFactory.openSession()) { UserMapper mapper = session.getMapper(UserMapper.class); mapper.delete(id); session.commit(); } } } ``` 其中,UserDAO 接口中定义了增删改查的方法,UserDAOImpl 实现了 UserDAO 接口,并且调用了对应的映射文件中的 SQL 语句。 6. 使用 DAO 层 在项目中使用 UserDAO 接口和实现类来进行数据库的操作,例如: ``` SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); UserDAO userDAO = new UserDAOImpl(sessionFactory); // 查询全部用户 List<User> userList = userDAO.findAll(); // 根据 id 查询用户 User user = userDAO.findById(1); // 新增用户 User newUser = new User(); newUser.setName("Tom"); newUser.setAge(20); userDAO.insert(newUser); // 修改用户 user.setName("Jerry"); user.setAge(30); userDAO.update(user); // 删除用户 userDAO.delete(1); ``` 这样就可以使用 MyBatis 框架实现增删改查系统了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值