MyBatis基础环境搭建(使用idea,meven)看了这篇文章搭的环境,由于感觉自我操作下来感觉有点不一样,特做记录
目录
·point
工具:ideaiu。
依赖:mybatis3.4.6 junit4.12 mysql-connector-java5.1.37 log4j1.2.12 lombok 1.16.20
顺便解决了maven拉取依赖过慢的问题,配置一个镜像
·修改settings.xml
进入conf目录下的settings.xml
加入以下在看注释在相应位置加上三段设置
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>F:\traingdaily\mevendepend\.m2\repository</localRepository>
<!--这里是我自己的本地仓库位置,你更改为你要存放的位置,不然默认可能是在C盘,我不喜欢C盘放这么多乱七八糟的东西就改了--!>
解决下载不动依赖包的问题,添加镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
添加我们要用的依赖
在pom.xml中
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
有不认识的依赖可以自己去查一下,下面会简单提一下干嘛用的
项目结构
TestObserver这个包是不必要的
maven一路next就行了,啥都不用加,或者你可以网上查看mybatis用maven简单搭建的教程
两种方式对表进行全部查询
·需要配置xml文件的形式
建立pojo包下的Person 类→mapper包下的PersonMapper 接口→@Test,junit的单元测试
import lombok.Data;
import java.io.Serializable;
@Data
public class Person implements Serializable {
private int id;
private String username;
private String jobs;
private String phone;
}
@Data是lombok
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。(该段摘自网络)
public interface PersonMapper {
/**
* 查询所有用户
* @return
*/
List<Person> findAll();
}
在resource下建立包,要用这种形式com/xx/xx/XXMapper.xml.具体对照下我的项目结构,这样实际编译的时候如图下所示
PersonMapper.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 namespace="com.yjy.mapper.PersonMapper">
<select id="findAll" resultType="com.yjy.pojo.Person">
select * from t_customer
</select>
</mapper>
在resource下建立mybatis-config.xml和log4j.properties
内容如下
<?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/mybatis"/>
<property name="username" value="你的数据库连接用户名"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<!-- 告知 mybatis 映射配置的位置 -->
<mappers>
<mapper resource="com/yjy/mapper/PersonMapper.xml"/>
<mapper class="com.yjy.mapper.UserMapper"/>
</mappers>
</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
第一个测试方法
@Test
public void Test1()throws IOException{
InputStream config= Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(config);
SqlSession session=factory.openSession();
PersonMapper personMapper=session.getMapper(PersonMapper.class);
List<Person> persons=personMapper.findAll();
for (Person person:persons){
System.out.println(person);
}
session.close();
config.close();
}
结果
这些日志对日后学习有帮助,不知道为啥当初Myeclipse配置log4j不生效
·不需要xml的形式
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapper {
/**
* 查询所有用户
*/
@Select("select * from t_user")
List<User> findAll();
}
<mapper class="com.yjy.mapper.UserMapper"/>
·额外要补充的
如果报错了,注意看看配置的mapper位置对不对,基本上就是这里的错误
数据库
/*
SQLyog 企业版 - MySQL GUI v8.14
MySQL - 5.0.96-community-nt : Database - mybatis
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `mybatis`;
/*Table structure for table `t_customer` */
DROP TABLE IF EXISTS `t_customer`;
CREATE TABLE `t_customer` (
`id` int(32) NOT NULL auto_increment,
`username` varchar(50) default NULL,
`jobs` varchar(50) default NULL,
`phone` varchar(16) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
/*Data for the table `t_customer` */
insert into `t_customer`(`id`,`username`,`jobs`,`phone`) values (1,'joy','doctor','15958024180'),(2,'jack','teacher','18858832868'),(3,'tom','ccc','133333333333'),(4,'roes','programmer','1145141191'),(9,'roes1','students1','1145141191');
/*Table structure for table `t_user` */
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`t_id` int(11) NOT NULL auto_increment,
`t_name` varchar(50) default NULL,
`t_age` int(11) default NULL,
PRIMARY KEY (`t_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*Data for the table `t_user` */
insert into `t_user`(`t_id`,`t_name`,`t_age`) values (1,'Lily',25),(2,'Lucy',20),(3,'Jim',20);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;