传统方式mybatis的增,删,改,查实现
准备工作
创建java Project项目,建库建表插入数据,到数据库中执行,导入jar包
在config目录下添加 log4j.propreties代码:
# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
开始编写
在config目录下添加 mybatis-config.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 是配置多个jdbc环境 default表示使用的默认环境 --> <environments default="development"> <!-- environment 标签用来配置一个环境 id 是环境的标识 --> <environment id="development"> <!-- transactionManager 配置使用什么样类型的数据库事务管理 type="JDBC" 表示启用事务,有commit和rollback操作 type="MANAGED" 表示不直接控制事务。交给容器处理几乎不用。 --> <transactionManager type="JDBC" /> <!-- dataSource标签配置连接池 type="POOLED" 表示启用数据库连接池 type="UNPOOLED" 表示不启用数据库连接池 --> <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="root" /> </dataSource> </environment> </environments> <mappers> <!-- 导入mapper配置文件 --> <mapper resource="com/pojo/UserMapper.xml" /> </mappers> </configuration>
创建一个UserDao接口
public interface UserDao { // 保存用户 public int saveUser(User user); // 更新用户 public int updateUser(User user); // 根据id删除用户 public int deleteUserById(int id); // 根据id搜索用户 public User findUserById(int id); // 搜索全部用户 public List<User> findUsers(); }
编写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属性是名称空间的意思。 功能相当于 给配置文件定义一个包名。 一般情况下。可以写两种值,一种是对应类的全类名 一种情况是。对应类的处理接口全类名 --> <mapper namespace="com.pojo.User"> <!-- 插入用户 parameterType 属性设置参数类型 id 为使用的标识 --> <insert id="saveUser" parameterType="com.pojo.User"> insert into t_user(last_name,sex) values(#{lastName},#{sex}) </insert> <!-- 更新用户 parameterType 属性设置参数类型 id 为使用的标识 --> <update id="updateUser" parameterType="com.pojo.User"> update t_user set last_name = #{lastName}, sex = #{sex} where id = #{id} </update> <!-- 根据id删除用户 parameterType 属性设置参数类型 id 为使用的标识 --> <delete id="deleteUserById" parameterType="int"> delete from t_user where id = #{id} </delete> <!-- 根据id搜索用户 parameterType 属性设置参数类型 id 为使用的标识 resultType 属性是返回的类型 --> <select id="findUserById" parameterType="int" resultType="com.pojo.User"> select id,last_name lastName,sex from t_user where id = #{id} </select> <!-- 搜索全部用户 id 为使用的标识 resultType 属性是返回的类型 --> <select id="findUsers" resultType="com.pojo.User"> select id,last_name lastName,sex from t_user </select> </mapper>
UserDaoImpl代码:
public class UserDaoImpl implements UserDao { SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } @Override public int saveUser(User user) { SqlSession sqlSession = sqlSessionFactory.openSession(); int result = 0; try { result = sqlSession.insert("com.pojo.User.saveUser", user); //提交事务 sqlSession.commit(); } finally { sqlSession.close(); } return result; } @Override public int updateUser(User user) { SqlSession sqlSession = sqlSessionFactory.openSession(); int result = 0; try { result = sqlSession.update("com.pojo.User.updateUser", user); //提交事务 sqlSession.commit(); } finally { sqlSession.close(); } return result; } @Override public int deleteUserById(int id) { SqlSession sqlSession = sqlSessionFactory.openSession(); int result = 0; try { result = sqlSession.delete("com.pojo.User.deleteUserById", id); //提交事务 sqlSession.commit(); } finally { sqlSession.close(); } return result; } @Override public User findUserById(int id) { SqlSession sqlSession = sqlSessionFactory.openSession(); User result = null; try { result = sqlSession.selectOne("com.pojo.User.findUserById", id); //提交事务 sqlSession.commit(); } finally { sqlSession.close(); } return result; } @Override public List<User> findUsers() { SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> result = null; try { result = sqlSession.selectList("com.pojo.User.findUsers"); //提交事务 sqlSession.commit(); } finally { sqlSession.close(); } return result; } }
测试类:
public class UserDaoTest { static UserDao userDao; /** * @BeforeClass标注的方法会在所有测试之前执行之前执行一次 * @throws Exception */ @BeforeClass public static void setUpBeforeClass() throws Exception { String url = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(url); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); userDao = new UserDaoImpl(sqlSessionFactory); } @Test public void testSaveUser() { userDao.saveUser(new User(null,"admins",0)); } @Test public void testUpdateUser() { userDao.updateUser(new User(2, "admin", 1)); } @Test public void testDeleteUserById() { userDao.deleteUserById(2); } @Test public void testFindUserById() { System.out.println(userDao.findUserById(1)); } @Test public void testFindUsers() { System.out.println(userDao.findUsers()); } }