MyBatis注解
来源:互联网 发布:贴片电容标称值算法 编辑:程序博客网 时间:2024/05/29 11:31
知识点
MyBatis 框架
注解
- @select
- @insert
- @update
- @delete
新建一个数据库并取名 mybatis 用作实验
create database mybatis;
创建表 user ,并插入数据:
mysql> create table user( -> id int primary key auto_increment, -> name varchar(20), -> sex varchar(10), -> age int);insert into user(name,sex,age) values('Tom','male',20),('Jack','male',19),('Rose','female',18),('Lucy','female',19);
检测数据插入情况:
select * from user;
4.2 Annotation 注解
MyBatis 的常用的注解包括:
更多关于 Annotation 注解的介绍请参考 MyBatis 中文文档。
4.3 新建工程项目
按照第二节中的方法新建动态 Web 工程,命名为 AnnotationTest。
4.4 导入所需 jar 包
所需 jar 包:
- MyBatis jar 包: mybatis-3.3.0.jar
- MySQL 驱动 jar 包: mysql-connector-java-5.1.35.jar
- 日志记录 jar 包: log4j-1.2.17.jar
将上述的三个 jar 包拷贝到项目的 /WebContent/WEB-INF/lib/ 目录下。
4.5 实体类
在Java Resources/src 的包 shiyanlou.mybatis.annotation.model 下新建类 User.java,一个用户具有 id、name、sex、age 属性。
User.java 的代码如下:
package shiyanlou.mybatis.annotation.model;
public class User { private Integer id; private String name; private String sex; private Integer age; public Integer getId() { return id; } public void setId(Integer 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}
4.6 创建方法接口
新建包 shiyanlou.mybatis.annotation.mapper ,并在包下新建方法接口 UserMapper.java。
UserMapper 接口的代码如下:
package shiyanlou.mybatis.annotation.mapper;
import java.util.List;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Options;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;import shiyanlou.mybatis.annotation.model.User;public interface UserMapper { /* * 新增用戶 * @param user * @return * @throws Exception */ @Insert("insert into user(name,sex,age) values(#{name},#{sex},#{age})") @Options(useGeneratedKeys=true,keyProperty="id") public int insertUser(User user) throws Exception; /* * 更新用戶 * @param user * @throws Exception */ @Update("update user set age=#{age} where id=#{id}") public void updateUser(User user) throws Exception; /* * 删除用戶 * @param id * @return * @throws Exception */ @Delete("delete from user where id=#{user_id}") public int deleteUser(@Param("user_id") Integer id) throws Exception; /* * 根据id查询用戶 * @param id * @return * @throws Exception */ @Select("select * from user where id=#{id}") @Results({ @Result(id=true,property="id",column="id"), @Result(property="name",column="name"), @Result(property="sex",column="sex"), @Result(property="age",column="age"), }) public User selectUserById(Integer id) throws Exception; /* * 查询所有用戶 * @return * @throws Exception */ @Select("select * from user") public List<User> selectAllUser() throws Exception;}
4.7 配置文件 mybatis.cfg.xml
在项目目录 /Java Resources/src 下新建 MyBatis 配置文件 mybatis.cfg.xml ,用来配置 Mybatis 的运行环境、数据源、事务等。
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> <!-- 配置mybatis运行环境 --> <environments default="development"> <environment id="development"> <!-- type="JDBC" 代表直接使用 JDBC 的提交和回滚设置 --> <transactionManager type="JDBC" /> <!-- POOLED 表示支持JDBC数据源连接池 --> <!-- 数据库连接池,由 Mybatis 管理,数据库名是 mybatis,MySQL 用户名 root,密码为空 --> <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="" /> </dataSource> </environment> </environments> <mappers> <!-- 通过 mapper 接口包加载整个包的映射文件 --> <package name="shiyanlou/mybatis/annotation/mapper" /></mappers></configuration>
4.8 日志记录 log4j.properties
使用日志文件是为了查看控制台输出的 SQL 语句。
在项目目录 /Java Resources/src 下新建 MyBatis 日志记录文件
log4j.properties ,在里面添加如下内容:
# Global logging configurationlog4j.rootLogger=DEBUG, stdout # Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
4.9 测试类 Test
在包 shiyanlou.mybatis.annotations.test 下新建测试类 Test.java ,代码如下:
package shiyanlou.mybatis.annotation.test;import java.io.IOException;import java.io.InputStream;import java.util.List;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 shiyanlou.mybatis.annotation.mapper.UserMapper;import shiyanlou.mybatis.annotation.model.User;public class Test { private static SqlSessionFactory sqlSessionFactory; public static void main(String[] args) { // Mybatis 配置文件 String resource = "mybatis.cfg.xml"; // 得到配置文件流 InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (IOException e) { e.printStackTrace(); } // 创建会话工厂,传入 MyBatis 的配置文件信息 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); insertUser(); // updateUser(); // deleteUser(); // selectUserById(); // selectAllUser(); } // 新增用户 private static void insertUser(){ // 通过工厂得到 SqlSession SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = new User(); user.setName("Anne"); user.setSex("female"); user.setAge(23); try { mapper.insertUser(user); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } // 释放资源 session.close(); } // 将id为1的用户的年龄更新为25 private static void updateUser(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = null; try { user = mapper.selectUserById(1); } catch (Exception e1) { e1.printStackTrace(); } user.setAge(25); try { mapper.updateUser(user); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } session.close(); } // 将id为5的用户删除 private static void deleteUser(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); try { mapper.deleteUser(5); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } session.close(); } // 查询id为1的用户信息 private static void selectUserById(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); try { User user = mapper.selectUserById(1); session.commit(); System.out.println(user.getId() + " " + user.getName() + " " + user.getSex() + " " + user.getAge()); } catch (Exception e) { e.printStackTrace(); session.rollback(); } session.close(); } // 查询所有用户信息 private static void selectAllUser(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); try { List<User> userList = mapper.selectAllUser(); session.commit(); for (User user : userList) { System.out.println(user.getId() + " " + user.getName() + " " + user.getSex() + " " + user.getAge()); } } catch (Exception e) { e.printStackTrace(); session.rollback(); } session.close(); }}
4.9 运行测试
分别调用 Test 类中的增删改查方法。
结果如下:
4.9.1 insertUser()
插入一条用户数据:
(1)控制台输出
(2)查看数据库
4.9.2 updateUser()
将 id 为1的用户的 age 修改为 25:
(1)控制台输出
(2)查看数据库
4.9.3 deleteUser()
将 id 为5的用户删除:
(1)控制台输出
(2)查看数据库
4.9.4 selectUserById()
查询 id 为1的用户信息:
4.9.5 selectAllUser()
查询所有用户信息:
- mybatis 注解
- mybatis注解
- mybatis注解
- mybatis 注解
- mybatis注解
- mybatis 注解
- MyBatis 注解
- Mybatis注解
- MyBatis注解
- mybatis注解
- Mybatis注解
- mybatis注解详解
- mybatis注解详解
- SpringMVC+mybatis+DWR3注解
- mybatis 注解配置
- mybatis注解+spring集成
- spring+mybatis+ehcache 注解
- mybatis注解详解
- Maven教程
- 二叉树的深度优先遍历(栈)和广度优先遍历(队列)
- Linux tar命令
- 【BZOJ】1598 [Usaco2008 Mar]牛跑步 k短路(最短路径+A*)
- 会话技术
- MyBatis注解
- NYOJ 833 取石子(七)
- 2017最佳经典之作-AngularJs 中select 下拉多选
- A
- 《剑指offer》笔记-第4章(4)
- idea 配置Tomcat
- 关于卸载赛风(psiphon)打不开网页解决办法
- 【分享】一些经典的C/C++语言基础算法及代码(一)
- 【分享】一些经典的C/C++语言基础算法及代码(二)