当前位置: 首页 > news >正文

网站开发人员工具网站开发及上线过程

网站开发人员工具,网站开发及上线过程,广告设计师工资一般多少钱一个月,网站seo工程师怎么做目录 注解开发 环境搭建 1.创建Maven工程 2.创建实体类 3.提供接口#xff0c;并提供增删改查的方法 4.编写SqlMapConfig.xml 主配置文件 5.采用注解的方式#xff0c;来进行增删改查 6.测试 7.测试保存用户的方法 8.测试更新用户 9.测试删除一个用户 10.根据id查…目录 注解开发 环境搭建 1.创建Maven工程 2.创建实体类 3.提供接口并提供增删改查的方法 4.编写SqlMapConfig.xml 主配置文件 5.采用注解的方式来进行增删改查 6.测试 7.测试保存用户的方法 8.测试更新用户 9.测试删除一个用户 10.根据id查询一个用户 11.根据姓名模糊查询 12.查询所有用户的个数 当实体类的属性名和表中的字段名不一致时采用注解怎么配置 1.修改实体类的属性名 2.配置实体类的属性和表中字段的映射关系 使用注解进行多表查询 一对一的关系查询比如查询该账户所对应的用户信息 1.提供账户的实体类 2.提供账户的接口 3.给账户接口上的方法添加注解先查询出所有账户 4.测试 5.上面还只是一个单表查询的测试下来我们要进行多表查询查询一个账户所对应的用户信息 6.在账户的接口中添加注解来进行一对一的查询 7.测试 一对多的查询 1.我在User的接口中进行一对多的配置 2.在账户的接口中提供一个方法以便查询该用户对应的账户时使用 3.测试 一级缓存的演示 注解开发 Insert:实现新增 Update:实现更新 Delete:实现删除 Select:实现查询 Result:实现结果集封装 Results:可以与Result 一起使用封装多个结果集 ResultMap:实现引用Results 定义的封装 One:实现一对一结果集封装 Many:实现一对多结果集封装 SelectProvider: 实现动态 SQL 映射 环境搭建 1.创建Maven工程 1.在pom.xml中 引入以下jar包 ​ dependenciesdependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.5/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.6/version/dependencydependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency/dependencies 2.创建实体类 public class User implements Serializable {private Integer id;private String username;private Date birthday;private String sex;private String address;//get set 方法略 自己补上} 3.提供接口并提供增删改查的方法 public interface IUserDao {//查询所有的方法ListUser findAll();//保存用户的方法void saveUser(User user);//更新用户void updateUser(User user);//删除一个用户void deleteUser(Integer id);//根据id查询出一个用户User selectUserById(Integer id);//根据姓名模糊查询ListUser selectUserByName(String name);//查询所有用户的个数int selectAllUser(); } 4.编写SqlMapConfig.xml 主配置文件 configuration !--properties 用来加载外部的jdbc的配置文件   --properties resourcejdbcConfig.properties/typeAliases !--给该包下所有的类都起别名别名可以是类名的小写大写--package nameorg.westos.domain//typeAliases ​environments defaultmysqlenvironment idmysqltransactionManager typeJDBC/transactionManager!--配置数据源连接池--dataSource typePOOLED !--               需要用${jdbc配置文件中的键名}--property namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environmentsmappers!--扫描该包下所有的接口所对应的映射文件--package nameorg.westos.dao//mappers /configuration 5.采用注解的方式来进行增删改查 1.在接口的查询所有方法上添加 select 注解 ​ public interface IUserDao {//查询所有的方法Select(value select * from user)ListUser findAll();} 6.测试 Testpublic void testFindAll() throws IOException {InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession factory.openSession();IUserDao dao sqlSession.getMapper(IUserDao.class);ListUser list dao.findAll();for (User user : list) {System.out.println(user);}} 7.测试保存用户的方法 1.在接口中的保存用户方法上面添加 insert 注解public interface IUserDao {//保存用户的方法Insert(value insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}))void saveUser(User user); ​ } 2. 测试 ​Testpublic void test() throws IOException {InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession factory.openSession();IUserDao dao sqlSession.getMapper(IUserDao.class);User user new User();user.setUsername(金城武);user.setSex(男);user.setBirthday(new Date());user.setAddress(陕西西安);dao.saveUser(user);//提交事务sqlSession.commit(); ​in.close();sqlSession.close(); 8.测试更新用户 1.在接口中的更新用户方法上添加  Update 的注解 public interface IUserDao {//更新用户Update(update user set username#{username},address#{address} where id#{id})void updateUser(User user); ​ } ​Testpublic void test() throws IOException {InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession factory.openSession();IUserDao dao sqlSession.getMapper(IUserDao.class);User user new User();user.setId(66);user.setUsername(金巧巧);user.setAddress(陕西咸阳);dao.updateUser(user); ​//提交事务sqlSession.commit(); ​in.close();sqlSession.close(); ​ ​ ​} 9.测试删除一个用户 1.在接口中的方法上 添加Delete注解 ​ //删除一个用户Delete(delete from user where id#{id})void deleteUser(Integer id);2.测试IUserDao dao sqlSession.getMapper(IUserDao.class);dao.deleteUser(66);//提交事务sqlSession.commit(); 10.根据id查询一个用户 1.在接口中的方法上添加注解 ​//根据id查询出一个用户Select(value select * from user where id#{uid})User selectUserById(Integer id);2.测试IUserDao dao sqlSession.getMapper(IUserDao.class);User user dao.selectUserById(66);System.out.println(user);//提交事务sqlSession.commit(); 11.根据姓名模糊查询 1.在接口的方法上添加注解//根据姓名模糊查询Select(value select * from user where username like #{name})ListUser selectUserByName(String name);2.测试IUserDao dao sqlSession.getMapper(IUserDao.class);ListUser list dao.selectUserByName(%沈%);for (User user : list) {System.out.println(user);} 12.查询所有用户的个数 1.在接口的方法上添加注解//查询所有用户的个数Select(value select count(*) from user)int selectAllUser();2.测试IUserDao dao sqlSession.getMapper(IUserDao.class);int i dao.selectAllUser();System.out.println(i); 当实体类的属性名和表中的字段名不一致时采用注解怎么配置 1.修改实体类的属性名 public class User implements Serializable {private Integer myid;private String myusername;private Date mybirthday;private String mysex;private String myaddress;//get set 方法略 自己补上}  说明当我们实体类的属性名和表中字段名不一致后我们查询用户时就封装不到实体类当中了那么我们就得进行配置 2.配置实体类的属性和表中字段的映射关系 1.我们就在接口中的查询所有方法上使用 Results 注解 来配置 实体类属性名和表中字段名的映射关系配好之后我们查询所有用户就可以封装进实体类中了 ​ ​ public interface IUserDao {//查询所有的方法Select(value select * from user)Results(id userMap, value {//配置主键字段 id true 表示这是主键字段Result(id true, property myid, column id),//配置其他普通字段Result(property myusername, column username),Result(property mybirthday, column birthday),Result(property mysex, column sex),Result(property myaddress, column address)})ListUser findAll();}  2. 我们接口中还有一个根据id查询单个用户也要将查询出的用户封装到实体类中所以这个方法也要配置 映射关系但是我们不是把上面配置好的映射关系再复制一份而是通过上面配置的 id名 引用一下即可那么就使用 ResultMap 来引用配置好的映射关系//根据id查询出一个用户Select(value select * from user where id#{uid})ResultMap(value userMap)  //引用上面配置好的映射关系User selectUserById(Integer id); 使用注解进行多表查询 一对一的关系查询比如查询该账户所对应的用户信息 1.提供账户的实体类 public class Account implements Serializable {private Integer id;private Integer uid;private Double money;//get set 方法略 自己补上}   2.提供账户的接口 public interface IAccountDao {//查询所有账户,以及该账户所对应的用户信息ListAccount findAll(); } 3.给账户接口上的方法添加注解先查询出所有账户 public interface IAccountDao {//查询所有账户,以及该账户所对应的用户信息Select(select * from account)ListAccount findAll(); } 4.测试 public class TestAccount {public static void main(String[] args) throws IOException {InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession factory.openSession();IAccountDao dao sqlSession.getMapper(IAccountDao.class);ListAccount list dao.findAll();for (Account account : list) {System.out.println(account);}in.close();sqlSession.close();} } 5.上面还只是一个单表查询的测试下来我们要进行多表查询查询一个账户所对应的用户信息 1.用户表和账户表之间他是一对多的关系但是我们站在账户表角度看那么一个账户就是属于一个用户也就是说多对一的关系在MyBatis中看来就是一对一的关系 ​ 2.首先在账户的实体类中维护一个用户的对象来描述这个一对一的关系 ​public class Account implements Serializable {private Integer id;private Integer uid;private Double money;//在多方维护一个一方的对象来体现一对一的关系private User user;// get set 方法略 自己补上 } 6.在账户的接口中添加注解来进行一对一的查询 1.我们先配置账户实体类和账户表的映射关系 2.再配置账户和用户的 一对一的关系 ​ public interface IAccountDao {//查询所有账户,以及该账户所对应的用户信息Select(select * from account)Results(id accountMap, value {Result(id true, property id, column id),Result(property uid, column uid),Result(property money, column money),//配置一对一的关系Result(property user, column uid, one One(select org.westos.dao.IUserDao.selectUserById, fetchType FetchType.EAGER))})ListAccount findAll(); } ​ 说明//配置一对一的关系 那么在Result注解中有一个one属性可以配置一对一/** property user 多方维护的一方的对象* column uid 多方表中通过uid这个字段跟一方产生关系* one 一对一关系的配置select org.westos.dao.IUserDao.selectUserById 查询依据 使用的是用户接口中通过id查询单个用户的这个方法fetchType FetchType.EAGER 加载模式使用的立即加载一般一对一的查询使用立即加载一对多 使用延迟加载* */ ​ 7.测试 public class TestAccount {public static void main(String[] args) throws IOException {InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession factory.openSession();IAccountDao dao sqlSession.getMapper(IAccountDao.class);ListAccount list dao.findAll();for (Account account : list) {System.out.println(account);//获取该账户对应得用户信息User user account.getUser();System.out.println(user);}in.close();sqlSession.close();} } ​ 一对多的查询 我们站在用户的角度那么一个用户肯定有多个账户 我们在用户的实体类中维护一个集合来描述这个一对多的关系 ​ public class User implements Serializable {private Integer myid;private String myusername;private Date mybirthday;private String mysex;private String myaddress;//提供一个集合来描述一对多的关系private ListAccount accounts;//get set 方法略 自己 补上  }   1.我在User的接口中进行一对多的配置 public interface IUserDao {//查询所有的方法Select(value select * from user)Results(id userMap, value {//配置主键字段 id true 表示这是主键字段Result(id true, property myid, column id),//配置其他普通字段Result(property myusername, column username),Result(property mybirthday, column birthday),Result(property mysex, column sex),Result(property myaddress, column address),//配置一对多的关系Result(property accounts,column id,many Many(select org.westos.dao.IAccountDao.findAccountById,fetchType FetchType.LAZY ​))})ListUser findAll(); ​//根据id查询出一个用户Select(value select * from user where id#{uid})ResultMap(value userMap)User selectUserById(Integer id);} ​ 说明 //配置一对多的关系// property accounts, 一方维护的集合名// column id 一方 id 这个字段跟多方产生关系Result(property accounts,column id,many Many(//查询依据使用账户接口中的方法根据uid查询该用户对应的账户select org.westos.dao.IAccountDao.findAccountById,fetchType FetchType.LAZY //延迟加载 ​)) 2.在账户的接口中提供一个方法以便查询该用户对应的账户时使用 public interface IAccountDao {//查询所有账户,以及该账户所对应的用户信息Select(select * from account)Results(id accountMap, value {Result(id true, property id, column id),Result(property uid, column uid),Result(property money, column money),Result(property user, column uid, one One(select org.westos.dao.IUserDao.selectUserById, fetchType FetchType.EAGER))})ListAccount findAll(); ​//提供一个根据uid查询账户的方法//注意是根据uid查询Select(select * from account where uid#{uid})Account findAccountById(Integer id); } ​ 3.测试 Testpublic void test() throws IOException {InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(in);SqlSession sqlSession factory.openSession();IUserDao dao sqlSession.getMapper(IUserDao.class);ListUser list dao.findAll();for (User user : list) {System.out.println(user);//获取改用户所对应的账户信息ListAccount accounts user.getAccounts();System.out.println(accounts);} ​in.close();sqlSession.close(); ​} 一级缓存的演示 1、什么是缓存存在于内存中的临时数据。为什么使用缓存减少和数据库的交互次数提高执行效率。什么样的数据能使用缓存什么样的数据不能使用适用于缓存经常查询并且不经常改变的。 省市区数据的正确与否对最终结果影响不大的。小软文自媒体写的花边新闻不适用于缓存经常改变的数据数据的正确与否对最终结果影响很大的。例如商品的库存银行的汇率股市的牌价。 ​ Mybatis中的一级缓存一级缓存它指的是Mybatis中SqlSession对象的缓存。当我们执行查询之后查询的结果会同时存入到SqlSession为我们提供一块区域中。该区域的结构是一个Map。当我们再次查询同样的数据mybatis会先去sqlsession中查询是否有有的话直接拿出来用。当SqlSession对象消失时mybatis的一级缓存也就消失了。 ​ 一级缓存是 SqlSession 范围的缓存当调用 SqlSession 的修改添加删除commit()close()等方法时就会清空一级缓存。 ​ public interface IUserDao2 {//更新用户Update(update user set username#{username},address#{address} where id#{id})void updateUser(User user);//根据id查询出一个用户Select(select * from user where id#{uid})User selectUserById(Integer id); } public class TestUserDao {public static void main(String[] args) throws IOException {//加载主配置文件InputStream in Resources.getResourceAsStream(SqlMapConfig.xml);//构建SessionFactorySqlSessionFactory sessionFactory new SqlSessionFactoryBuilder().build(in);//获取sqlSessionSqlSession sqlSession sessionFactory.openSession();//获取接口的代理对象IUserDao dao sqlSession.getMapper(IUserDao.class); ​//第一次查询根据id查询出一个用户User user dao.selectUserById(59);System.out.println(user); //不要重写toString方法打印一下地址值 ​//sqlSession.clearCache();清空一级缓存//第一次查询出用户后我们更新用户也会清空一级缓存//user.setUsername(张全蛋);//user.setAddress(陕西咸阳);//dao.updateUser(user);//再进行第二次查询如果之前没有清空缓存就会从缓存中查询如果清空了就从数据库中查询User user2 dao.selectUserById(59);System.out.println(user2); //System.out.println(user2user); //对比两次查询的对象是否是同一个对象sqlSession.commit(); ​//释放资源in.close();sqlSession.close();} } ​
http://www.zqtcl.cn/news/369391/

相关文章:

  • 建设纺织原料网站专业网页制作室
  • 买域名做网站推广都是些什么湘潭什么网站做c1题目
  • 鲜花网站建设图片昆明网站建站平台
  • 密云网站制作案例昆明小程序开发
  • 网站紧急维护商丘手机网站制作
  • 什么专业会制作网站罗湖做网站的公司哪家好
  • 永久免费ppt下载网站有没有跟一起做网店一样的网站
  • 百川网站石家庄物流网站建设
  • 广州外贸网站设计外贸seo外贸推广外贸网站建设外贸网站建设
  • 网站 栏目建设银行网站用户名是什么
  • 服装类的网站建设中原免费网站建设
  • 网站开发培训班多少报名费安徽省建设工程信息网站
  • 旅游网站规划设计余姚网站公司
  • 广州市地铁站地图dede增加手机网站
  • dede 网站名称 空的网站开发行业新闻
  • 网站开发费用做账升级系统
  • 外贸公司网站制作价格网络公司的经营范围有哪些
  • 东莞三合一网站制作海南省生态文明村建设促进会网站
  • 邯郸做企业网站设计的公司福田祥菱m2
  • 手表拍卖网站动漫做暧视频网站
  • 福州网站定制公司如何做p2p网站
  • 微信外链网站开发嘉兴市城市建设门户网站
  • 在手机上如何制作网站qq注册网页入口
  • asp.net程序做的网站安全吗国内什么网站用asp.net
  • 凡科网做网站网站编辑知识
  • c#做交易网站taxonomy wordpress
  • 统一门户网站开发员给我用织梦做的网站
  • 网站上有声的文章是怎么做的深圳市住房和建设局网站和市住宅租赁管理服务中心
  • 如何对网站进行爬虫页面设计存在的问题
  • 知名网站建设加盟合作企业邮箱如何登录