01.MyBatis快速入门
2024-10-07 22:01:13
1.下载jar包
Mybatis包+数据库驱动包
https://github.com/mybatis/mybatis-3/releases
2.新建Java工程并导入jar包
3.创建数据库与表
CREATE DATABSE mybatis01; USE mybatis01; SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(32) NOT NULL COMMENT '用户名称', `birthday` date DEFAULT NULL COMMENT '生日', `sex` char(1) DEFAULT NULL COMMENT '性别', `address` varchar(256) DEFAULT NULL COMMENT '地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; INSERT INTO `user` VALUES ('1', '王五', null, '2', null); INSERT INTO `user` VALUES ('10', '张三', '2014-07-10', '1', '北京市'); INSERT INTO `user` VALUES ('16', '张小明', null, '1', '河南郑州'); INSERT INTO `user` VALUES ('22', '陈小明', null, '1', '河南郑州'); INSERT INTO `user` VALUES ('24', '张三丰', null, '1', '河南郑州'); INSERT INTO `user` VALUES ('25', '陈小明', null, '1', '河南郑州'); INSERT INTO `user` VALUES ('26', '王五', null, null, null);
4.新建Mybatis核心配置文件+log4j配置文件
<?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> <!-- 和spring整合后 environments配置将废除 --> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理 --> <transactionManager type="JDBC" /> <!-- 数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="toor" /> </dataSource> </environment> </environments> </configuration>
# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
5.创建实体类和映射文件
public class User implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 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 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; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } }
<?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:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 --> <mapper namespace="test"> </mapper>
6.在SqlMalConfig.xml中配置映射文件
<!-- 添加映射 --> <mappers> <mapper resource="cn/itcast/mybatis/po/User.xml"/> </mappers>
7.测试
1.查询一条结果
<!-- 通过ID查询一个结果 --> <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User"> select * from user where id = #{id} </select>
/** * 通过ID查询一个结果 * @throws Exception */ @Test public void m01() throws Exception{ //加载配置文件 InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); //获取SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //执行SQL User user = sqlSession.selectOne("test.findUserById", 10); System.out.println(user); }
2.通过用户名模糊查询
<!-- 通过用户名模糊查询 --> <select id="findUserByUsername" parameterType="String" resultType="cn.itcast.mybatis.po.User"> select * from user where username like "%"#{username}"%" <!-- SELECT * FROM `user` WHERE username LIKE '%${value}%' --> </select>
//执行SQL List<User> list = sqlSession.selectList("test.findUserByUsername", "王五"); for (User user : list) { System.out.println(user); }
3.添加用户
<!-- 添加用户 --> <insert id="insert" parameterType="cn.itcast.mybatis.po.User"> insert into user(username,sex,birthday,address) values(#{username},#{sex},#{birthday},#{address}) </insert>
//执行SQL User user = new User(); user.setUsername("添加User"); user.setSex("男"); user.setBirthday(new Date()); user.setAddress("未知区域"); sqlSession.insert("test.insert", user); //手动提交事务!! sqlSession.commit();
4.添加用户,返回ID
<!-- 添加用户 返回ID --> <insert id="insertRE" parameterType="cn.itcast.mybatis.po.User"> <selectKey keyProperty="id" resultType="Integer" order="AFTER"> select LAST_INSERT_ID() </selectKey> insert into user(username,sex,birthday,address) values(#{username},#{sex},#{birthday},#{address}) </insert>
//执行SQL User user = new User(); user.setUsername("添加User"); user.setSex("男"); user.setBirthday(new Date()); user.setAddress("未知区域"); int id = sqlSession.insert("test.insertRE", user); //手动提交事务!! sqlSession.commit(); System.out.println(user.getId());
5.更新用户
<!-- 更新用户 --> <update id="update" parameterType="cn.itcast.mybatis.po.User"> update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id = #{id} </update>
//执行SQL User user = new User(); user.setId(31); user.setUsername("更新User"); user.setSex("女"); user.setBirthday(new Date()); user.setAddress("火星"); sqlSession.update("test.update", user); //手动提交事务!! sqlSession.commit();
6删除用户
<!-- 删除用户 --> <delete id="delete" parameterType="int" > delete from user where id=#{id} </delete>
//执行SQL sqlSession.delete("test.delete", 31); //手动提交事务!! sqlSession.commit();
最新文章
- ubuntu 加载新硬盘或分区
- java jni c++ 例子
- 查看修改Linux时区和时间
- 右键添加 CMD 命令提示符
- 真机在wifi下调试android程序
- Hadoop 分布式文件系统 - HDFS
- POJ3264Balanced Lineup 线段树练手
- Windows2003中IIS配置MVC提示HTTP错误 404-文件或目录未找到
- Linux crond定时任务
- breakpoints
- (C#) 多线程修改布尔值, volatile
- Spark系列(十)TaskSchedule工作原理
- 【log4js】
- Android Capability 细粒度的权限控制
- OpenCV——改变图像大小
- js实现编码,解码
- information_schema.key_column_usage 学习
- Android Studio 如何导入第三方jar 包
- 《JavaScript设计模式与开发实践》读书笔记之策略模式
- zabbix入门知识
热门文章
- NX二次开发-UFUN按类型遍历名字获取Tag函数UF_OBJ_cycle_by_name_and_type
- Python 爬虫-爬取京东手机页面的图片
- JavaScript笔记 &ndash; 程序语法设计
- JS-copy到剪贴板
- webService服务简单实现
- 9-MySQL高级-主从同步时Slave_IO_Running:Connecting ; Slave_SQL_Running:Yes的情况故障排除
- 2019-7-29-C#-在基类定义好方法让子类继承接口就能实现
- kkFileView在centos7上安装
- dart中的typedef <;函数别名>;
- hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题