文章目录
新建
新建项目–maven项目–填写相关信息–完成
配置pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
在resource下新建db.properties文件
用来连接数据库
# db.properties
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/demo
db.username=root
db.password=root
新建log4j.properties文件
用来配置log4j日志
#日志文件配置
log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
在Java文件里新建包entity及Java类user.java
public class user0 {
private Long id;
/**
* 名称
*/
private String name;
/**
* 用户名
*/
private Object userName;
/**
* 出生日期
*/
private Date birthday;
/**
* 年龄
*/
private Integer age;
/**
* 角色
*/
private Role role;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getUserName() {
return userName;
}
public void setUserName(Object userName) {
this.userName = userName;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
在resource下创建mapper文件夹与user.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">
<!--
namespace:命名空间,主要用于statement分类管理唯一标识符
注意:在mapper代理模式开发时,这个有另外的特殊作用
-->
<mapper namespace="user">
<!-- 根据 ID 查询数据 -->
<select id="findUserById" parameterType="long" resultType="包名.entity.User">
select * from `user` where id=#{id};
</select>
<insert id="addUser" parameterType="包名.entity.User">
<selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user(user_name,`name`,birthday,age) values(#{userName},#{name},#{birthday},#{age});
</insert>
<!-- 根据ID 更新数据 -->
<update id="updateById" parameterType="包名.entity.User">
update user set user_name=#{userName},name=#{name},birthday=#{birthday},age=#{age}
where id=#{id}
</update>
<!-- 根据ID 删除数据 -->
<delete id="deleteById" parameterType="integer">
delete from user where id=#{id};
</delete>
</mapper>
在text下新建包及UserTest.java
public class UserTest {
private SqlSession sqlSession;
//该注解用于执行以下 TEST注解方法执行前 初始化
@Before
public void init() throws IOException {
// 通过相对路径,加载配置文件
String resource = "MybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 初始化工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取sql session
sqlSession = sqlSessionFactory.openSession();
}
@Test
public void findUserById() {
// 执行查询方法
User user = sqlSession.selectOne("user.findUserById", 1L);
System.err.println(user.toString());
}
@Test
public void addUser() {
// 新增一个用户
User user = new User();
user.setUserName("xiaoyi");
user.setName("小一");
user.setBirthday(new Date());
user.setAge(11);
sqlSession.insert("user.addUser", user);
System.err.println(user.toString());
sqlSession.commit();
System.err.println(user.toString());
}
@Test
public void updateById() {
// 更新数据
User user = new User();
user.setId(1L);
user.setUserName("xiaosan");
user.setName("小三");
user.setAge(12);
user.setBirthday(new Date());
sqlSession.update("user.updateById", user);
sqlSession.commit();
}
@Test
public void deleteById() {
// 删除一条数据
sqlSession.delete("user.deleteById", 2);
sqlSession.commit();
}
//用于 TEST注解 方法执行后 关闭资源
@After
public void destroy() {
sqlSession.close();
}
}
使用maven命令打包项目
mvn clean install -Dmaven.test.skip=true
可能会出现错误:No compiler is provided in this environment. Perhaps you are running on a JRE
解决方案:
maven安装目录下的bin中的mvn.cmd文件中在第一行加一行代码就可以了
set JAVA_HOME=D:\develop\java
在原始mybatis项目基础上跟进
在原来的包下新建mapper包,新建UserMapper.java
public interface UserMapper {
User findUserById(Long id);
List<User> findUserByName(String userName);
void addUser(User user);
void updateById(User user);
void deleteById(Integer id);
}
在resource/mapper下新建UserMapper.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">
<!--
namespace:命名空间,主要用于statement分类管理唯一标识符
注意:在mapper代理模式开发时,这个有另外的特殊作用
-->
<mapper namespace="包名.mapper.UserMapper">
<!-- 根据 ID 查询数据 -->
<select id="findUserById" parameterType="long" resultType="包名.entity.User">
select * from `user` where id=#{id};
</select>
<!-- ${}内必须写value -->
<select id="findUserByName" parameterType="java.lang.String" resultType="com.hand.myc.entity.User">
select * from `user` where user_name like '%${value}%';
</select>
<!--
只要主键不是自增,selectKey中order设置为BEFORE,需要给显示赋值
Oracle的Seq是要order设为BEFORE来获取的
-->
<insert id="addUser" parameterType="包名.entity.User">
<selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user(user_name,`name`,birthday,age) values(#{userName},#{name},#{birthday},#{age});
</insert>
<!-- 根据ID 更新数据 -->
<update id="updateById" parameterType="包名.entity.User">
update user set user_name=#{userName},name=#{name},birthday=#{birthday},age=#{age}
where id=#{id}
</update>
<!-- 根据ID 删除数据 -->
<delete id="deleteById" parameterType="integer">
delete from user where id=#{id};
</delete>
</mapper>
在test下新建测试类UserMapperTest.java
public class UserMapperTest {
private SqlSession sqlSession;
private UserMapper userMapper;
//该注解用于执行以下 TEST注解方法执行前 初始化
@Before
public void init() throws IOException {
// 通过相对路径,加载配置文件
String resource = "MybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 初始化工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取sql session
sqlSession = sqlSessionFactory.openSession();
// 获取对应的接口实现对象
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Test
public void findUserById() {
// 执行查询方法
User user = userMapper.findUserById(1L);
System.out.println(user.toString());
}
@Test
public void findUserByName() {
// 执行查询方法
List<User> users = userMapper.findUserByName("xiaosi");
System.out.println(users.size());
}
@Test
public void addUser() {
// 新增一个用户
User user = new User();
user.setUserName("xiaosi");
user.setName("小四");
user.setBirthday(new Date());
user.setAge(12);
userMapper.addUser(user);
System.err.println(user.toString());
sqlSession.commit();
System.err.println(user.toString());
}
@Test
public void updateById() {
// 更新数据
User user = new User();
user.setId(5L);
user.setUserName("xiaowu");
user.setName("小五");
user.setAge(13);
user.setBirthday(new Date());
userMapper.updateById(user);
sqlSession.commit();
}
@Test
public void deleteById() {
// 删除一条数据
userMapper.deleteById(1);
sqlSession.commit();
}
//用于 TEST注解 方法执行后 关闭资源
@After
public void destroy() {
sqlSession.close();
}
}