Java 语言凭借着其良好的特性与广泛的开源应用框架,以及众多的应用支持成为市场占有率最高的语言.SSM框架作为java开发目前应用最为广泛的框架组合,也是java学习必学的三大基础框架.今天小编将与大家一起进行Mybaits框架的学习,本期学习将分为四篇文章进行介绍,欢迎大家关注小编以便及时获得最新文章.
上一篇文章小编着重介绍了Mybaits框架的基础原理,以及相关的概念,本文小编将带着大家做一个简单的增删改查小案例,深入的了解下mybaits框架的实际应用.对于未观看上一篇文章,对Mybaits不是太了解的读者可以点击下面链接进行观看上一篇文章
上一篇:
Mybatis增删改查基本操作
一、XML实现方式
1、mapper.xml的配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"">
<!-- 通常使用包名逆序作为命名空间,命名空间的存在也是为了防止多个mapper.xml中出现重复的id -->
<mapper namespace="com.mybatis.mapper.UserMapper">
<!-- 新增用户数据 -->
<insert id="insertUser" parameterType="com.mybatis.model.User">
<!-- #{name}相当于jdbc中的的?号,name值与Bean字段对应,可自动获取 -->
insert into users values(#{id}, #{ username }, #{password}, #{email}, #{age})
</insert>
<!-- 查找用户数据 -->
<select id="selectUser" resultType="com.mybatis.model.User" parameterType="int">
select * from users where id = #{id}
</select>
<!-- 查找用户数据集合 -->
<!-- 基本数据类型可以不用写完整类名 -->
<select id="selectUsers" resultType="com.mybatis.model.User" parameterType="int">
select * from users t where t.age = #{age}
</select>
<!-- 更新用户数据 -->
<update id="updateUser" parameterType="com.mybatis.model.User">
update users set age = #{age} where id = #{id}
</update>
<!-- 删除用户数据 -->
<delete id="deleteUser" parameterType="int">
delete from users where id = #{id}
</delete>
</mapper>
2、单元测试代码
/** * 使用XML配置实现CRUD操作 */ public class DbTest2 { private SqlSessionFactory sqlSessionFactory; /** * 初始化工作 */ @Before public void init() throws IOException { //通过mybatis提供的资源加载类加载配置文件 reader reader = Resources.getResourceAsReader("Configuration.xml"); //获取SqlSessionFactoryBuilder SqlSessionFactoryBuilder sqlSessionFactroyBuilder = new SqlSessionFactoryBuilder(); //根据XML配置文件构建SqlSessionFactory SqlSessionFactory sqlSessionFactory = sqlSessionFactroyBuilder.build(reader); this.sqlSessionFactory = sqlSessionFactory; } //新增操作 @Test public void insertUser() { //Mybatis默认情况下不会commit,即默认connection.setAutoCommit(false); //传入true代表自动提交 SqlSession session = sqlSessionFactory.openSession(true); try { User user = new User(); user.setId("1"); user.setUsername("zhangsan"); user.setPassword("123456"); user.setAge("18"); user.setEmail("zhangsan@163.com"); session.insert("com.mybatis.mapper.UserMapper.insertUser", user); } finally { session. close (); } } //查询操作 @Test public void queryUser() { SqlSession session = sqlSessionFactory.openSession(true); try { User user = session.selectOne("com.mybatis.mapper.UserMapper.selectUser", 1); System.out.println(user); } finally { session.close(); } } //查询多条操作 @Test public void queryUsers() { SqlSession session = sqlSessionFactory.openSession(true); try { List<User> userList = session.selectList("com.mybatis.mapper.UserMapper.selectUsers", 18); System.out.println(userList.size()); } finally { session.close(); } } //更新操作 @Test public void updateUser() { SqlSession session = sqlSessionFactory.openSession(true); try { User user = new User(); user.setId("1"); user.setAge("25"); int num = session.update("com.mybatis.mapper.UserMapper.updateUser", user); System.out.println(num); } finally { session.close(); } } //删除操作 @Test public void deleteUser() { SqlSession session = sqlSessionFactory.openSession(true); try { int num = session.delete("com.mybatis.mapper.UserMapper.deleteUser", 1); System.out.println(num); } finally { session.close(); } } }
二、注解实现
1、编写Mapper接口
* 使用注解的方式配置SQL映射关系 * 需要注意的事此接口不用具体编写实现代码,而将由Mybatis动态的帮我们构建 * 这样的代码由于避免了强制类型转换和参数不匹配的问题,因此更加安全 */ public interface UserMapperI { @Insert("insert into users values(#{id}, #{username}, #{password}, #{email}, #{age})") int insertUser(User user); @Select("select * from users where id = #{id}") User selectUser(String id); @Select("select * from users t where t.age = #{age}") List<User> selectUsers(String age); @Update("update users set age = #{age} where id = #{id}") int updateUser(User user); @Delete("delete from users where id = #{id}") int deleteUser(String id); }
2、注册接口
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ""> <configuration> <properties resource="database.properties"></properties> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 注册sql映射文件 --> <mappers> <!-- 注册UserMapper.xml文件 --> <mapper resource="com/mybatis/mapper/UserMapper.xml"/> <!-- 注册UserMapperI接口 --> <mapper class="com.mybatis.mapper.UserMapperI"/> </mappers> </configuration>
3、单元测试代码
/** * 使用注解实现CRUD操作 */ public class DbTest3 { private SqlSessionFactory sqlSessionFactory; @Before public void init() throws IOException { //通过mybatis提供的资源加载类加载配置文件 Reader reader = Resources.getResourceAsReader("Configuration.xml"); //获取SqlSessionFactoryBuilder SqlSessionFactoryBuilder sqlSessionFactroyBuilder = new SqlSessionFactoryBuilder(); //根据XML配置文件构建SqlSessionFactory SqlSessionFactory sqlSessionFactory = sqlSessionFactroyBuilder.build(reader); this.sqlSessionFactory = sqlSessionFactory; } //新增操作 @Test public void insertUser() { SqlSession session = sqlSessionFactory.openSession(true); try { UserMapperI mapper = session.getMapper(UserMapperI.class); User user = new User(); user.setId("1"); user.setUsername("zhangsan"); user.setPassword("123456"); user.setAge("18"); user.setEmail("zhangsan@163.com"); int num = mapper.insertUser(user); System.out.println(num); } finally { session.close(); } } //查询操作 @Test public void queryUser() { SqlSession session = sqlSessionFactory.openSession(true); try { UserMapperI mapper = session.getMapper(UserMapperI.class); User user = mapper.selectUser("1"); System.out.println(user); } finally { session.close(); } } //查询多条操作 @Test public void queryUsers() { SqlSession session = sqlSessionFactory.openSession(true); try { UserMapperI mapper = session.getMapper(UserMapperI.class); List<User> userList = mapper.selectUsers("18"); System.out.println(userList.size()); } finally { session.close(); } } //更新操作 @Test public void updateUser() { SqlSession session = sqlSessionFactory.openSession(true); try { UserMapperI mapper = session.getMapper(UserMapperI.class); User user = new User(); user.setId("1"); user.setAge("25"); int num = mapper.updateUser(user); System.out.println(num); } finally { session.close(); } } //删除操作 @Test public void deleteUser() { SqlSession session = sqlSessionFactory.openSession(true); try { UserMapperI mapper = session.getMapper(UserMapperI.class); int num = mapper.deleteUser("1"); System.out.println(num); } finally { session.close(); } } }