編寫Mybatis代碼,與spring不一樣,不需要導入插件,只需導入架包即可;
在lib下 導入mybatis架包:mybatis-3.1.1.jar
mysql驅動架包:mysql-connector-java-5.1.6-bin.jar
在src目錄下建立xml配置文件:conf.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>
<!--
environments:開發模式
work:工作模式
default="development",id="development",兩個的屬性值必須一致
-->
<environments default="development">
<environment id="development">
<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="root"/>
<property name="password" value="lxn123"/>
</dataSource>
</environment>
</environments>
<!-- 在配置文件中 關聯包下的 接口類-->
<mappers>
<mapper class="com.atguigu.mybatis.test3.UserMapper"/>
</mappers>
</configuration>
這是基於注解的方式,所以建立一個接口,在定義的方法上配置上應有的注解,注解中含有sql語句,需要提示的是這個接口不需要類去實現它
package com.atguigu.mybatis.test3; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import com.atguigu.mybatis.test.User; public interface UserMapper { /* * 這是基於注解的映射方式,實現對數據的增刪改查,將sql語句直接寫在注解的括號中 * 這是一個接口,其不需要類去實現它 * 下邊分別是插入,刪除,修改,查詢一個記錄,查詢所有的記錄 * */ @Insert("insert into users(name,age) values(#{name},#{age})") public void insertT(User user); @Delete("delete from users where id=#{id}") public void deleteById(int id); @Update("update users set name=#{name},age=#{age} where id=#{id}") public void updateT(User user); @Select("select * from users where id=#{id}") public User getUser(int id); @Select("select * from users") public List<User> getAllUsers(); }
封裝列:User,這兒只寫屬性,getter和setter,tostring就不寫了
private int id; private String name; private int age;
建立MybatisUtils類,有一個方法,加載mybatis和構建sqlSession
package com.atguigu.mybatis.test; import java.io.InputStream; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisUtils { public static SqlSessionFactory getFactory(){ String resource="conf.xml"; //加載mybatis 的配置文件(它也加載關聯的映射文件) InputStream is=MybatisUtils.class.getClassLoader().getResourceAsStream(resource); //構建sqlSession 的工廠 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); return factory; } }
實現增刪改查的方法
package com.atguigu.mybatis.test3; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; import com.atguigu.mybatis.test.MybatisUtils; import com.atguigu.mybatis.test.User; public class UserMapperTest { @Test //插入數據 public void testInsert(){ SqlSessionFactory factory=MybatisUtils.getFactory(); SqlSession session=factory.openSession(true); //使用反射的方法 UserMapper mapper=session.getMapper(UserMapper.class); mapper.insertT(new User(-1, "p", 4)); session.close(); } @Test //刪除數據 public void testDelete(){ SqlSessionFactory factory=MybatisUtils.getFactory(); SqlSession session=factory.openSession(true); UserMapper mapper=session.getMapper(UserMapper.class); mapper.deleteById(1); session.close(); } @Test //修改數據 public void testUpdate(){ SqlSessionFactory factory=MybatisUtils.getFactory(); SqlSession session=factory.openSession(true); UserMapper mapper=session.getMapper(UserMapper.class); mapper.updateT(new User(2, "jjjjj", 232)); session.close(); } @Test //獲取一條數據 public void testGetUser(){ SqlSessionFactory factory=MybatisUtils.getFactory(); SqlSession session=factory.openSession(true); UserMapper mapper=session.getMapper(UserMapper.class); User user=mapper.getUser(2); session.close(); System.out.println(user); } @Test //獲取所有數據 public void testGetAllUsers(){ SqlSessionFactory factory=MybatisUtils.getFactory(); SqlSession session=factory.openSession(true); UserMapper mapper=session.getMapper(UserMapper.class); List<User> users=mapper.getAllUsers(); session.close(); System.out.println(users); } }
