mybatis入门demo
- 创建数据库
- mysql创建user表
CREATE TABLE `user` ( `id` int(32) NOT NULL COMMENT 'id\r\n', `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `sex` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `birthday` date NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
-
创建maven普通工程mybatis-parent,删除src目录,添加mybatis依赖。
<!--添加mybatis依赖--> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
- 创建子模块mybatis-01
- resources目录下创建配置文件mybatis-config.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="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?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/qiaob/mapper/UserMapper.xml"/> </mappers> </configuration>
- 封装mybatis工具类
package com.qiaob.utils; 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.Test; import java.io.IOException; import java.io.InputStream; public class MybatisUtils { static { //使用mybatis第一步:获取sqlSessionFactory对象 try { String resource = "mybatis-config.xml"; InputStream inputStream = null; inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } private static SqlSessionFactory sqlSessionFactory; public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
- 生成pojo实体类
package com.qiaob.pojo; import java.util.Date; public class User { private int id; private String name; private String sex; private Date birthday; public User() { } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", birthday=" + birthday + '}'; } 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
- 生成mapper数据层接口
package com.qiaob.mapper;
import com.qiaob.pojo.User;
import java.util.ArrayList;
public interface UserMapper {
//查询所有
public ArrayList<User> getUserList();
//根据id查询某个
public User getUserById(int id);
//插入用户
public int addUser(User user);
//更新用户
public int updateUser(User user);
//删除用户
public int deleteUser(int id);
}
8. 在resources相同层级目录下创建UserMapper.xml
<mapper namespace="com.qiaob.mapper.UserMapper">:代表实现哪个mapper的接口方法
id="getUserList" :对应mapper的方法名 resultType="com.qiaob.pojo.User":对应返回集类型
parameterType="com.qiaob.pojo.User":sql中可以直接调用属性
sqlSession.commit():mybatis要手工提交事务才生效
<?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.qiaob.mapper.UserMapper">
<select id="getUserList" resultType="com.qiaob.pojo.User">
select * from mybatis.user
</select>
<select id="getUserById" resultType="com.qiaob.pojo.User" parameterType="int">
select * from mybatis.user where id = #{id}
</select>
<insert id="addUser" parameterType="com.qiaob.pojo.User">
insert into mybatis.user(id, name, sex, birthday) values (#{id},#{name},#{sex},#{birthday})
</insert>
<update id="updateUser" parameterType="com.qiaob.pojo.User">
update mybatis.user set birthday = #{birthday} where id=#{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id =#{id}
</delete>
</mapper>
9.创建单元测试类
- 获得指定日期的方法
1 2 3 4 5 6 7 | SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" ); Date d = null ; try { d = sdf.parse( "2018-03-09" ); } catch (ParseException e) { e.printStackTrace(); } |
package com.qiaob.dao; import com.qiaob.mapper.UserMapper; import com.qiaob.pojo.User; import com.qiaob.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; public class UserDaoTest { @Test public void testUserList(){ //第一步:获得sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //第二步:执行sql UserMapper mapper = sqlSession.getMapper(UserMapper.class); ArrayList<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } //第三步:关闭sqlSession sqlSession.close(); } @Test public void testGetUserById(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.getUserById(1); System.out.println(user); sqlSession.close(); } @Test public void testSaveUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = new User(3, "乔逸之", "1", new Date()); int num = mapper.addUser(user); System.out.println(num); sqlSession.commit(); sqlSession.close(); } @Test public void testUpdate(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d =null; try { d = sdf.parse("2018-03-09"); } catch (ParseException e) { e.printStackTrace(); } mapper.updateUser(new User(3,"乔逸之","1",d)); sqlSession.commit(); sqlSession.close(); } @Test public void testDeleteUser( ){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUser(3); sqlSession.commit(); sqlSession.close(); } }
补充:如果想将mapper.xml和mapper放在同一路径下,则需要在pom文件中增加导出过滤,见博客《关于在maven项目中配置文件资源导出问题》。
分类:
mybatis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能