【8】mybatis接口注释

在前面【mybatis映射器】这一节中,讲到了注解实现映射器,使用注解让代码更简单,代码更安全,不容易发生的字符串文字和转换的错误,这一节,我们再做一个例子,加深印象

准备工作就是在mysql创建一个表结构并添加一条记录,sql语句如下:

CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL DEFAULT '',
`dept` varchar(254) NOT NULL DEFAULT '',
`website` varchar(254) DEFAULT '',
`phone` varchar(16) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

INSERT INTO `user` VALUES ('1', 'yiibai', 'Tech', 'http://www.yiibai.com', '13800009988')

创建成功,结果如图:

 

 1,创建动态网站项目mybatisDemoA7,并将MyBatis目录下lib目录下的jar包,核心包mybatis-3.5.6.jar以及 MySQL 数据库的驱动 jar 包(mysql-connector-java-5.1.38-bin.jar)复制到WebContent /WEB-INF/lib 目录中,选择这些包,右键添加到编译路径中

 2,创建一个bean:User

在 src 源码目录下创建一个包:com.yiibai.mybatis.bean,并建立实体类 User,注意该实体类私有变量必须与前面mysql数据库中创建的user表字段类型一致,代码配置如下:

package com.yiibai.mybatis.bean;

public class User {
private int id;
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 getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
private String name;
private String dept;
private String phone;
private String website;
}

3,创建一个接口:IUser,并在其中声明对应的操作方法

 在 src 源码目录下创建一个包:com.yiibai.mybatis.dao,并建立接口类 IUser 及一个方法, 在方法上面,使用SQL注解方式,配置代码如下:

package com.yiibai.mybatis.dao;

import org.apache.ibatis.annotations.Select;
import com.yiibai.mybatis.bean.User;

public interface IUser {
@Select("select * from user where id= #{id}")
public User getUserByID(int id);
}

4,配置 MyBatis 所需的数据连接文件

在src根目录下,创建一个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>
<!--配置别名 -->
<typeAliases>
<typeAlias alias="User" type="com.yiibai.mybatis.bean.User" />
</typeAliases>
<environments default="development">
<!--配置数据库环境 -->
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库的URL -->
<property name="url" value="jdbc:mysql://localhost:3306/cctv?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>

5,测试接口映射

在 src 这个目录下创建包com.yiibai.mybatis.test,在该中创建一个带有Main方法的类test,用来测试整个配置和程序运行结果

package com.yiibai.mybatis.test;

import java.io.Reader;
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 com.yiibai.mybatis.bean.User;
import com.yiibai.mybatis.dao.IUser;

public class test {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");//加载mybatis配置文件
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();//获取sqlsession对象
try {
IUser iuser = session.getMapper(IUser.class);//获取指定类对象
User user = iuser.getUserByID(1);//调用指定对象的指定方法
System.out.println("名字:" + user.getName());
System.out.println("所属部门:" + user.getDept());
System.out.println("主页:" + user.getWebsite());
} finally {
session.close();
}
}
}

代码结构如图:

 

 程序运行结果如下:

 红色部分是指没有配置Log4j的日志文件,这没有关系的,绝不会影响程序的逻辑结果

本节代码:mybatisDemoA7,下节继续。

 

posted @ 2021-10-02 23:05  伟大国际  阅读(169)  评论(0)    收藏  举报