写这个中间遇到的一些小问题:
写入数据中文乱码: 在url 后面加 ?characterEncoding=utf-8 这是我的问题
也许你可能是建表时,表个格式没有设置为utf-8,多看看。
这个还比较简单
下面代码我都会把一些地方的过程写详细点,可以直接看代码
实体类 domain
public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "user{" + "id=" + id + ", username='" + username + '\'' + ", address='" + address + '\'' + ", sex='" + sex + '\'' + ", birthday=" + birthday + '}'; } }
持久层 dao类
public interface IUserDao {
/**
*查询所有用户
* @return
*/
List<User> findAll();
/**
* 保存用户
* @param user
*/
void saveUser(User user);
/**
* 更新 用户
* @param user
*/
void updateUser(User user);
/**
* 工具id 删除用户
* @param id
*/
void deleteUser(Integer id);
/**
* 根据id查询
* @param id
* @return
*/
User findById(Integer id);
/**
* 根据名称模糊查询用户信息
* @param username
* @return
*/
List<User> findByName(String username);
/**
* 查询总用户数
* @return
*/
int findTotal();
}
SqlMapConfig.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 default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/eesy?characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </dataSource> </environment> </environments> <!--注意路径 是/ 不是 . 这个是得到映射路径--> <mappers> <mapper resource="com/itheima/dao/IUserDao.xml"></mapper> </mappers> </configuration>
IUsesrDao.xml
注意:resultType="com.itheima.domain.User" 表示它的结果的类型 是User,就是自己创建的实体类User
<?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"> <mapper namespace="com.itheima.dao.IUserDao"> <select id="findAll" resultType="com.itheima.domain.User"> select * from user; </select> <!--保存用户--> <insert id="saveUser" parameterType="com.itheima.domain.User"> insert into user(username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday}); </insert> <!--更新用户--> <update id="updateUser" parameterType="com.itheima.domain.User"> update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}; </update> <!--删除用户--> <delete id="deleteUser" parameterType="Integer"> delete from user where id=#{id}; </delete> <!--根据id查询用户--> <select id="findById" parameterType="Integer" resultType="com.itheima.domain.User"> select * from user where id=#{id}; </select> <!--根据名称模糊查询--> <select id="findByName" parameterType="string" resultType="com.itheima.domain.User"> <!-- /*select * from user where username like #{name}*/--> select * from user where username like '%${value}%'; </select> <!--获取用户总记录条数--> <select id="findTotal" resultType="int"> select count(id) from user; </select> </mapper>
测试类
这里是吧 一些重复代码提取出来,简化代码 @Before 就是在最开始执行 public class MybatisTest { private InputStream in; private SqlSession sqlSession; private IUserDao userDao; @Before public void init() throws Exception{ //1 读取配置文件,生成字节输入流 in= Resources.getResourceAsStream("SqlMapConfig.xml"); //2 获取SqlSessionFactory SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); //3 获取SqlSession对象 sqlSession = factory.openSession(); //4 获取dao代理对象 userDao = sqlSession.getMapper(IUserDao.class); } @After public void destory() throws Exception{ // 事物提交 sqlSession.commit(); sqlSession.close(); in.close(); } /** * 测试查询所有 */ @Test public void testFindAll() throws IOException { List<User> list = userDao.findAll(); for (User user : list) { System.out.println(user); } } /** * 测试保存 */ @Test public void testSave(){ User user=new User(); user.setUsername("mybatis"); user.setAddress("北京"); user.setSex("男"); user.setBirthday(new Date()); userDao.saveUser(user); } /** * 测试更新操作 */ @Test public void testUpdate(){ User user=new User(); user.setId(50); user.setUsername("mybatis update"); user.setAddress("北京"); user.setSex("男"); user.setBirthday(new Date()); // 执行保持方法 userDao.updateUser(user); } /** * 测试删除 */ @Test public void testDelete(){ // 执行删除方法 userDao.deleteUser(48); } /** * 测试查询一个 */ @Test public void testFindOne(){ // 执行查询一个方法 User user = userDao.findById(47); System.out.println(user); } /** * 测试模糊查询 */ @Test public void testFindByName(){ // 执行查询一个方法 //List<User> users=userDao.findByName("%王%"); List<User> users=userDao.findByName("王"); for (User user : users) { System.out.println(user); } } /** * 测试查询总记录条数 */ @Test public void testFindTotal(){ // 执行查询一个方法 int total = userDao.findTotal(); System.out.println(total); } }