Mybatis入门案例IDEA Mac(图文)

    科技2024-08-08  101

    目录

    1. 开发工具及环境2. 环境搭建2.1 创建工程2.2 数据库导入2.3 porm.xml文件编写2.4 User.java文件编写2.5 UserDao接口文件编写2.6 SqlMapConfig.xml主配置文件编写2.7 编写UserDao对应的配置文件2.8 环境终于搭建完成了 3. 入门案例3.1 案例编写3.2 案例结果 4. 添加增删改查操作4.1 增加用户基础步骤4.2 修改MybatisTest.java4.3 修改和删除用户4.4 查找特定的用户4.5 输出用户总数

    1. 开发工具及环境

    IDEAmysql 5.7.31terminal

    2. 环境搭建

    2.1 创建工程

    打开IDEA,点击 +Create New Project

    选择Maven–>jdk版本1.8–>直接Next(注:不要勾选create from archetype)

    输入groupId和工程名字,点击Finish

    2.2 数据库导入

    从百度云下载 mybatisdb.sql,就2k 🔗:https://pan.baidu.com/s/1L3pPpBAx9LM3mt2uOnyUmA 密码:2opl

    打开terminal,使用 mysql -u root -p打开数据库。create 一个新的数据库,建议 eesy_mybatis。进入该数据库。输入source,将mybatisdb.sql文件拖到terminal中,点击回车 然后就会有一大对文件自动注入。

    此时数据库导入已完成,输入 show tables,显示eesy_mybatis有以下表:

    2.3 porm.xml文件编写

    回到IDEA,当前IDEA目录如下所示

    打开porm.xml文件(一般自动成打开状态)

    在porm.xml中添加包和依赖,添加完后如下图所示

    2.4 User.java文件编写

    在main.java文件夹下创建User类 java–>New–>Java Class 输入com.kca.domain.User

    打开terminal,进入mysql,进入eesy_mybatis数据库,输入SQL:select * from user;,如下输出:

    在新建的User类中对应的字段名(如下所示,列名与实体类名相同)(图中第3步应该是:按住option+回车,导入java.util.Date,即可消除报错)

    在private String address;,下方点击右键,选择Generate,显示以下画面:

    选择Getter and Setter,显示以下画面: 全选–>OK,IDEA自动生成set get 函数

    在

    public void setAddress(String address) { this.address = address; }

    下方,右键选择Generate,选择toString(),点击OK

    User类编写完成,如下所示: package com.kca.domain; import java.io.Serializable; import java.util.Date; /** * User实体类 */ public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }

    2.5 UserDao接口文件编写

    在main.java文件夹下创建UserDao接口 java–>New–>Java Class 输入com.kca.dao.UserDao,(注:此时应该选择Interface类型)

    此时目录如下所示:

    UserDao 是User的持久层接口,在这里编写各种操作的接口,例如现在我们要编写一个查询所有用户的操作,就在这里输入:List<User> findAll();

    2.6 SqlMapConfig.xml主配置文件编写

    右键resources–>New–>File 输入 SqlMapConfig.xml

    复制以下Config的约束的内容到SqlMapConfig.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"> 开始配置环境 输入<confuguratio,点击回车,自动生成 <configuration> </configuration>

    输入<environ,点击回车,自动生成

    <configuration> <!--配置环境--> <environments default=""> <environment id=""> <transactionManager type=""></transactionManager> <dataSource type=""></dataSource> </environment> </environments> </configuration>

    在default中输入mysql 在id中输入mysql(与上方一致) 在transactionManager type中输入JDBC 在dataSource type中输入POOLED

    完成后,SqlMapConfig.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> <!--配置环境--> <environments default="mysql"> <!--配置mysql环境--> <environment id="mysql"> <!--配置事务类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源(连接池)--> <dataSource type="POOLED"> </dataSource> </environment> </environments> </configuration> 配置数据库的四个基本信息,连接eesy_mybatis数据库 在<dataSource type="POOLED">内添加(XXXXXX为你自己的数据库密码) <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbs:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="XXXXX"/> 在</environments>下方添加<mappers>指定映射配置文件 <mappers> <mapper resource="com/kca/dao/UserDao.xml"/> </mappers> 主配置文件编写完成 <?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="mysql"> <!--配置mysql环境--> <environment id="mysql"> <!--配置事务类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="mxy10163"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/kca/dao/UserDao.xml"/> </mappers> </configuration>

    2.7 编写UserDao对应的配置文件

    右键resources–>New–>Directory–>输入com右键com–>New–>Directory–>输入kca右键kc a–>New–>Directory–>输入dao右键dao–>New–>File–>输入UserDao.xml 复制以下Mapper的约束的内容到UserDao.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 <mapper namespace="com.kca.dao.UserDao"> <!--配置查询所有--> <select id="findAll" resultType="com.kca.domain.User"> select * from user </select> </mapper>

    2.8 环境终于搭建完成了

    3. 入门案例

    3.1 案例编写

    右键test–>New–>Java Class 输入com.kca.test.MybatisTest首先定义main函数 public static void main(String[] args){ } 创建一个测试实力需要以下五个步骤 3.1读取配置文件 3.2创建SqlSessionFactory工厂 3.3使用工厂生产SqlSession对象 3.4使用SqlSession创建Dao接口的代理对象 3.5使用代理对象执行方法 3.6释放资源依次写入代码即可 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创建Dao接口的代理对象 UserDao userDao = session.getMapper(UserDao.class); // 5.使用代理对象执行方法 List<User> users = userDao.findAll(); for (User user : users){ System.out.println(user); } // 6.释放资源 session.close(); in.close(); } }

    3.2 案例结果

    运行main函数,输出以下内容即为成功

    4. 添加增删改查操作

    4.1 增加用户基础步骤

    打开java–>com–>kca–>dao–>UserDao.java添加新增用户接口 void saveUser(User user);

    打开resources–>com–>kca–>dao–>UserDao.xml配置保存新用户 <select id="saveUser" parameterType="com.kca.domain.User"> insert into user (username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday}) </select>

    打开test–>java–>com–>kca–>test–>MybatisTest.java编写保存新用户操作 在之前main函数下方添加 /** * 保存新用户 */ @Test public void testSave()throws Exception{ User user = new User(); user.setUsername("mybatis saveUser"); user.setAddress("北京顺义"); user.setSex("男"); user.setBirthday(new Date()); // 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创建Dao接口的代理对象 UserDao userDao = session.getMapper(UserDao.class); // 5.使用代理对象执行方法 userDao.saveUser(user); // 6.释放资源 session.close(); in.close(); } 运行testSave,成功后,查看数据库User表,新增名为【mybatis saveUser】的用户

    4.2 修改MybatisTest.java

    增加代码重用率

    在MybatisTest类中添加新的init方法

    此时main函数也可以改为普通的findAll方法

    将刚刚的创建代理对象的四个步骤粘贴到init中

    在init上方定义对象,并修改init中的代码

    在init下方添加新的destroy方法,并粘贴刚刚的释放步骤,并添加事物提交

    在init上方添加**@Before**,在destroy上方添加**@After**

    修改findAll与testSave,删除重复的。于是MybatisTest.java的代码如下所示:

    package com.kca.test; import com.kca.dao.UserDao; import com.kca.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.InputStream; import java.util.Date; import java.util.List; /** *入门案例 */ public class MybatisTest { private InputStream in; private SqlSession session; private UserDao userDao; @Before public void init()throws Exception{ // 1.读取配置文件 in = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); // 3.使用工厂生产SqlSession对象 session = factory.openSession(); // 4.使用SqlSession创建Dao接口的代理对象 userDao = session.getMapper(UserDao.class); } @After public void destroy()throws Exception{ // 6.释放资源 session.commit(); //事务提交 session.close(); in.close(); } @Test public void findAll(){ // 5.使用代理对象执行方法 List<User> users = userDao.findAll(); for (User user : users){ System.out.println(user); } } /** * 保存新用户 */ @Test public void testSave(){ User user = new User(); user.setUsername("mybatis simplify"); user.setAddress("浙江杭州"); user.setSex("男"); user.setBirthday(new Date()); // 5.使用代理对象执行方法 userDao.saveUser(user); } } 先运行saveUser,再运行findAll,运行结果为:

    4.3 修改和删除用户

    在UserDao.java接口中添加updateUser接口与deleteUser接口 /** * 修改用户 */ void updateUser(User user); /** * 删除用户 */ void deleteUser(Integer id); 在UserDao.xml中添加SQL配置 <!--配置更新用户--> <update id="updateUser" parameterType="com.kca.domain.User"> update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}; </update> <!--配置删除用户--> <delete id="deleteUser" parameterType="Integer"> delete from user where id = #{uid} </delete> 在MybatisTest.java中添加新的测试代码 /** * 更新用户 */ @Test public void testUpdate(){ User user = new User(); user.setId(42); user.setUsername("mybatis update"); user.setAddress("北京市顺义"); user.setSex("男"); user.setBirthday(new Date()); // 5.使用代理对象执行方法 userDao.updateUser(user); } /** * 删除用户 */ @Test public void testDelete(){ userDao.deleteUser(51); } 运行testUpdate,数据库数据被修改运行testDelete,数据库数据被删除

    4.4 查找特定的用户

    在UserDao.java接口中添加testFindId接口与testFindName接口 /** * 根据Id查找用户 */ User findById(Integer id); /** * 根据名字查多个 */ List<User> findByName(String name); 在UserDao.xml中添加SQL配置 <!--配置按ID查询--> <select id="findById" parameterType="Integer" resultType="com.kca.domain.User"> select * from user where id=#{uid}; </select> <!--配置按名字查询--> <select id="findByName" parameterType="String" resultType="com.kca.domain.User"> select * from user where username like #{name} </select> 在MybatisTest.java中添加新的测试代码 /** * 按Id查找 */ @Test public void testFindId(){ Integer i = 43; User user = userDao.findById(i); System.out.println(user); } /** * 按姓名模糊查询 */ @Test public void testFindName(){ List<User> users = userDao.findByName("%王%"); for(User user : users){ System.out.println(user); } } 运行testFindId,数据库数据输出运行testFindName,数据库数据输出

    4.5 输出用户总数

    在UserDao.java接口中添加findTotal接口 /** * 查询总用户数 */ Integer findTotal(); 在UserDao.xml中添加SQL配置 <!--配置输出总用户数--> <select id="findTotal" resultType="Integer"> select count(id) from user </select> 在MybatisTest.java中添加新的测试代码 /** * 输出用户总数 */ @Test public void testTotal(){ int count = userDao.findTotal(); System.out.println(count); } 运行testTotal,输出用户总数
    Processed: 0.010, SQL: 9