一:工程环境搭建
1.创建mybatisConfig.xml文件(创建user表请参考mybatis详解一)
<?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>
<!-- 是用resource属性加载外部配置文件 -->
<properties resource="db.properties">
<!-- 在properties内部用property定义属性 -->
<!-- 如果外部配置文件有该属性,则内部定义属性被外部属性覆盖 -->
<property name="jdbc.username" value="root123" />
<property name="jdbc.password" value="root123" />
</properties>
<typeAliases>
<!-- 单个别名定义 -->
<!--<typeAlias alias="user" type="com.jiuqi.pojo.User" /> -->
<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
<package name="mybatis1.pojo" />
<!--也可以为多个包的pojo取别名-->
<!--<package name="com.jiuqi.queryVO"/>-->
</typeAliases>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers >
<!--
将mybatis1.mapper包下的所有xml导入进来。
使用此标签必须注意xml文件与java文件必须在同一包下。
如果与spring整合后他们是可以分开的。
-->
<package name="mybatis1.mapper"/>
</mappers>
</configuration>
2.创建User类
package mybatis1.pojo;
import java.sql.Timestamp;
public class User {
private int id; //用户id
private String username;//用户姓名
private Timestamp birthday;//用户生日
private String sex;//用户性别
private String address;//用户地址
public User() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Timestamp getBirthday() {
return birthday;
}
public void setBirthday(Timestamp birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
3.创建UserMapper接口
package mybatis1.mapper;
import mybatis1.pojo.User;
public interface UserMapper {
//获取用户通过id
public User getUserById(String id);
//保存用户信息用户
public void saveUser(User user);
//更新用户信息
public void updateUser(User user);
//删除用户信息
public void deleteUserById(String id);
}
4.定义操作 user 表的sql映射文件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:值为对应的UserMapper.java的全路径名-->
<mapper namespace="mybatis1.mapper.UserMapper">
<!--
id:是对应接口的方法名getUserById
parameterType:为getUserById方法的入参类型
resultType:为getUserById方法的返回值类型
-->
<select id="getUserById" parameterType="String" resultType="User">
SELECT * FROM `user` where id = #{id}
</select>
<insert id="saveUser" parameterType="User">
insert into `user`(id,username,birthday,sex,address)
values (#{id}, #{username}, #{birthday}, #{sex}, #{address});
</insert>
<update id="updateUser" parameterType="User" >
UPDATE `user`
SET username = #{username}, birthday = #{birthday} , sex = #{sex} ,address = #{address}
WHERE id = #{id}
</update>
<delete id="deleteUserById" parameterType="String">
DELETE FROM `user`
WHERE id = #{id}
</delete>
</mapper>
5:测试代码
public class TestDemo {
private SqlSession sqlSession = null;
@Before
public void init() throws IOException {
//创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//读取mybatisConfig.xml配置文件
InputStream in = Resources.getResourceAsStream("mybatisConfig.xml");
//根据配置文件sqlSessionFactoryBuilder创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
//创建一个与数据会话的对象
sqlSession = sqlSessionFactory.openSession();
}
//通过id获取用户
public void getUserById() {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//获取用户
User user = userMapper.getUserById("1");
System.out.println(user);
}
//保存用户信息
@Test
public void saveUser(){
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId("12");
user.setUsername("lisi");
user.setAddress("guizhou");
user.setBirthday(new Timestamp(System.currentTimeMillis()));
user.setSex(1);
//保存用户到数据库
userMapper.saveUser(user);
sqlSession.commit();
}
//更新用户
@Test
public void updateUser(){
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId("12");
user.setUsername("zhangsan");
user.setAddress("guizhou");
user.setBirthday(new Timestamp(System.currentTimeMillis()));
user.setSex(1);
//更新用户
userMapper.updateUser(user);
sqlSession.commit();
}
//删除用户
@Test
public void deleteUser(){
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//删除用户
userMapper.deleteUserById("12");
sqlSession.commit();
}
}
6:总结
①、将 sql 语句配置到 xml 文件中,即使 sql 语句变化了,我们也不需要对 Java 代码进行修改。
②、将 sql 语句以及占位符和参数都配置到 xml 文件中。
③、java代码中没有try-catch代码。
④、返回结果是自动帮我们映射到User对象里的。