在mybatis.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>
<!-- type:指的是要被定义别名的类的全限定名 -->
<typeAlias type="com.cbb.pojo.User" alias="user" />
<!-- 批量起别名 name:包
会扫描配置的包下的所有的类然后批量的起别名。别名为类名(首字母大写或小写都可以)-->
<package name="com.cbb.pojo"/>
</typeAliases>
<!-- 运行时环境:与spring整合后就不需要了
default:运行哪个冠军,里面是id -->
<environments default="mysql">
<environment id="mysql">
<!-- 事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
在实体类配置文件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:分割sql -->
<mapper namespace="UserMapper">
<!-- 入门程序:根据用户id查询用户信息
id:唯一的(本namespace下唯一),用于标识映射文件的sql
parameterType:输入参数类型;支持的基本类型包括 :java基本类型,pojo对象和hashmap
resultMap:输出参数类型;支持的基本类型包括 :java基本类型,pojo对象和hashmap,指定为单条记录的类型
#{}:占位符,注意:如果输入参数类型是基本类型,则#{}里面可以是任意参数,或者是#{}
-->
<select id="selectById" parameterType="int" resultType="com.cbb.pojo.User">
select * from user where id = #{id}
</select>
<!-- 名字模糊查询
${}:取值方式使用的是sql拼接,没有进行sql注入的处理。应该少用
如果输入参数是基本类型的,${}里只能是${value}
-->
<select id="selectByName" parameterType="String" resultType="com.cbb.pojo.User">
<!-- Select * from user where username Like '%${value}%' -->
Select * from user where username Like CONCAT("%",#{username},"%")
</select>
<!-- 新增用户 useGeneratedKeys默认值为空,返回插入记录的主键,给keyProperty -->
<insert id="addUser" parameterType="com.cbb.pojo.User" useGeneratedKeys="true" keyProperty="id">
insert into user(username,birthday,sex,address) Values(#{username},#{birthday},#{sex},#{address})
</insert>
<!-- 修改语句 -->
<update id="updateUser" parameterType="com.cbb.pojo.User">
update user set username=#{username},sex=#{sex} where id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
</mapper>
实体类User:
package com.cbb.pojo;
import java.util.Date;
public class User {
private int id;
private String username;
private Date birthday;
private String sex;
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex + "]";
}
}
数据库我在这就不写了,自己根据实体类建吧
Junit的测试类
其中的@Before注解下函数会在@Test注解下的函数之前被运行,@After注解下函数会在@Test注解下的函数之后被运行
增删改后要写事务提交的 sqlSession.commit(); 语句
查找不用
package com.cbb.test;
import java.util.Date;
import java.util.List;
import java.io.IOException;
import java.io.InputStream;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.cbb.pojo.User;
public class UserMTest {
private SqlSession sqlSession;
@Before
public void init() {
//初始化 加载环境 创建会话工厂 获取会话
try {
//1.加载mybatis的运行环境 io流的方式去读取全局配置文件
InputStream iStream =Resources.getResourceAsStream("mybatis.xml");
//2.创建会话工厂
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(iStream);
//3.获取会话
sqlSession = sqlSessionFactory.openSession();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void selectById() {
//4.操作数据库
//第一个参数:statement的id 具体执行的Sql 写法是:namespace.id
//第二个参数:值
User user=(User)sqlSession.selectOne("UserMapper.selectById",1);
System.out.println(user.toString());
}
/**
* 查询用户
*/
@Test
public void selectByName() {
//4.操作数据库
//第一个参数:statement的id 具体执行的Sql 写法是:namespace.id
//第二个参数:值
List<User> users=sqlSession.selectList("UserMapper.selectByName","三");
System.err.println(users);
}
/**
* 新增用户的测试用例
*/
@Test
public void addUser() {
User user=new User();
user.setUsername("Tom");
user.setBirthday(new Date());
user.setSex("男");
user.setAddress("洛杉矶");
int res=sqlSession.insert("UserMapper.addUser", user);
sqlSession.commit();
}
/**
* 修改用户
*/
@Test
public void updateUser() {
User user=new User();
user.setId(49);
user.setUsername("Jack");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("洛杉矶");
int res=sqlSession.update("UserMapper.updateUser", user);
sqlSession.commit();
System.err.println(res);
}
@Test
public void deleteUser() {
sqlSession.delete("UserMapper.deleteUser", 50);
sqlSession.commit();
}
@After
public void after() {
//释放资源
sqlSession.close();
}
}